【发布时间】:2015-11-25 08:01:40
【问题描述】:
我写了下面的代码,我发现如果我按照下面的方式写的话item pipeline 不会工作,process_item (in item pipeline) 不会被执行。
class Spider(scrapy.Spider):
name = “***”
def __init__(self, url='http://example.com/', **kw):
super(Spider,self).__init__(**kw)
self.url = url
self.allowed_domains = [re.sub(r'^www\.', '', urlparse(url).hostname)]
def start_requests(self):
#return [Request(self.url, callback=self.parse, dont_filter=False)]
return [Request(self.url, callback=self.find_all_url, dont_filter=False)]
def find_all_url(self,response):
log.msg('current url: '+response.url, level=log.DEBUG)
if True:
self.parse(response)
def parse(self, response):
dept = deptItem()
dept['deptName'] = response.xpath('//title/text()').extract()[0].strip()
dept['url'] = response.url
log.msg('find an item: '+ str(response.url) +'\n going to return item' , level = log.INFO)
return dept
但是,如果我将 start_requests 中的回调从 self.find_all_url 更改为 self.parse(参见上面的注释代码),项目管道可以工作,我试图找出原因,但我找不到,有人可以帮忙吗?
【问题讨论】:
标签: python scrapy scrapy-spider