我想从start_requests
调用N个scrappy requests。这个值是动态的,因为我想遍历API中的所有页面。我之前不知道页面的限制数量。但是我知道当我超过页面数量时,API的响应将是一个空json。我想做如下操作:
url = "https://example.com?page={}"
def start_requests(self):
page = 0
while True:
page += 1
yield scrapy.Request(url=url.format(page), callback=self.parse)
def parse(self, response, **kwargs):
data = json.loads(response.body)
if 'key' in data:
# parse and yield an item
pass
else:
# do not yield an item and break while loop in start_requests
我不知道如何实现这一点。我可以return
一个值从回调(而不是yield
)当条件满足?
1条答案
按热度按时间pbwdgjma1#
不能,但是您可以将class属性设置为一个标志,指示
start_requests
不应继续:例如: