【发布时间】:2016-05-11 23:39:49
【问题描述】:
我正在解析一个 url 列表,并且我想避免在某些值的条件下保存某些 url 结果项。我的代码是这样的:
start_urls = [www.rootpage.com]
def parse(self,response):
item = CreatedItem()
url_list = response.xpath('somepath').extract()
for url in url_list:
request = scrapy.Request(item['url'],callback=self.parse_article)
request.meta['item'] = item
yield request
def parse_article(self,response):
item = response.meta['item']
item['parameterA'] = response.xpath('somepath').extract()
yield item
现在我希望如果 item['parameterA'] 遵循条件,则不需要“yield request”(因此不会保存此 url)。我尝试添加一个条件,如:
if item['parameterA'] == 0:
continue
else:
yield item
但正如预期的那样它不起作用,因为scrapy甚至在执行请求之前就继续循环。
【问题讨论】:
-
等等,但获得
parameterA的唯一方法是发出请求? -
是的,因为我必须“查看”该网址下的内容,然后决定是否保存。
标签: python web-scraping scrapy scrapy-spider