2014-10-04 39 views
2

我是Scrapy的新手,如果这个问题微不足道,我很抱歉。我从官方网页上阅读了Scrapy的文档。而我通过看文件,我遇到了这个例子:python scrapy parse()函数,其中返回的值是什么?

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) 

我知道,解析方法必须返回一个项目或/和要求,但如果在这些返回值返回?

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

我对Scrapy过程很困惑,甚至我所读取的原稿....

回答

8

按照documentation

的parse()方法是负责处理响应和 的返回刮取的数据(作为Item对象)以及更多URL(如 请求对象)。

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

整个数据流过程是在Architecture Overview页面以非常详细的方式描述。

希望有所帮助。