0
我有以下url开头:http://somedomain.mytestsite.com/?offset=0。我想通过增加offset参数来循环这个url,比如说每次100。每次我收到响应时,我都需要检查一些条件以决定是否应该运行下一次迭代。例如:遍历Scrapy中的url params模板
class SomeSpider(BaseSpider):
name = 'somespider'
offset = 0
items = list()
def start_requests(self):
return [scrapy.Request("http://somedomain.mytestsite.com/?offset="+str(self.offset), callback=self.request_iterator)]
def request_iterator(self, response):
body = response.body
#let's say we get json as response data
data = json.loads(body)
#check if page still have data to process
if data["matches"]:
self.items.extend(data["matches"])
self.offset += 100
return self.start_requests()
else:
#process collected data in items list
return self.do_something_with_items()
这有效,但我不禁感觉这个代码有什么问题。也许我应该使用一些scrapy的rules
?
谢谢!我编辑了'start_urls'属性,以便至少处理一个项目+由于我们在'parse'方法中做了所有的事情,所以'next_request'回调中不需要。 – Helvdan