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