6

我是 Scrapy 的新手,如果这个问题是微不足道的,我很抱歉。我从官方网页上阅读了关于 Scrapy 的文档。当我浏览文档时,我遇到了这个例子:

import scrapy
from myproject.items import MyItem

class MySpider(scrapy.Spider):
  name = ’example.com’
  allowed_domains = [’example.com’]
  start_urls = [
  ’http://www.example.com/1.html’,
  ’http://www.example.com/2.html’,
  ’http://www.example.com/3.html’,
  ]

  def parse(self, response):
    for h3 in response.xpath(’//h3’).extract():
      yield MyItem(title=h3)
    for url in response.xpath(’//a/@href’).extract():
      yield scrapy.Request(url, callback=self.parse) 

我知道,parse 方法必须返回一个项目或/和请求,但是这些返回值返回到哪里呢?

一个是项目,另一个是请求,我认为这两种类型的处理方式会有所不同,在 的情况下CrawlSpider,它具有带有回调的规则。这个回调的返回值呢?去哪儿 ?一样parse()吗?

我对 Scrapy 程序很困惑,即使我阅读了文档....

4

1 回答 1

9

根据文档

parse() 方法负责处理响应并返回抓取的数据(作为 Item 对象)和更多要遵循的 URL(作为 Request 对象)。

换句话说,返回/产生的项目和请求的处理方式不同,项目被交给项目管道和项目导出器,但请求被放入Scheduler管道中,Downloader用于发出请求并返回响应。然后,引擎接收响应并将其交给蜘蛛进行处理(给callback方法)。

整个数据流过程在架构概述页面中以非常详细的方式进行了描述。

希望有帮助。

于 2014-10-04T18:52:59.163 回答