我想从网站上提取所有数据。
我正在使用scrapy 0.20.2
我的代码是
class MySpider(CrawlSpider):
start_urls = ['TheWebsite']
rules = [Rule(SgmlLinkExtractor(allow=['/?page=\d+']), 'parse')]
def parse(self, response):
sites = sel.xpath('MyXPath')
for site in sites:
if condition < 8:
yield Request(Link, meta = {'date': Date},\
callback = self.MyFunction)
else:
# Code to stop scrapy goes here.
抓取工具会搜索具有以下语法的网址中的所有数据:
Mywebsite?page=INTEGER
但是当发生特定情况时,我想停止抓取。在我的代码中,我希望在else
发生时执行此操作。怎么样?
答案 0 :(得分:1)
要退出for
循环,请使用break
:
for site in sites:
if condition < 8:
# ...
else:
break
这会使您超出for
循环,因此退出parse
。如果您需要重新发送值,而不是隐式return None
,则可以return
代替break
,这也将退出该函数。 break
还允许您在函数中包含更多代码:
for ...:
if something:
break
# do something else before finishing
答案 1 :(得分:0)