我是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程序非常困惑,即使我阅读了文档......
答案 0 :(得分:9)
parse()方法负责处理响应和 返回抓取的数据(作为Item对象)和更多要遵循的URL(如 请求对象)。
换句话说,返回/产生的项目和请求的处理方式不同,项目正在递送到项目管道和项目导出器,但请求被放入Scheduler
,将请求传递给{{1用于发出请求并返回响应。然后,引擎接收响应并将其提供给蜘蛛进行处理(到Downloader
方法)。
整个数据流程在Architecture Overview页面中以非常详细的方式描述。
希望有所帮助。