0
我一直在運行的Scrapy刮刀,並注意到它返回重複的結果。換句話說,它是從另一個項目分配項目的結果。當請求同時運行時,Scrapy會覆蓋結果嗎?
我的設置文件有CONCURRENT_REQUESTS = 100
,並且不設置DOWNLOAD_DELAY
。
這是我的蜘蛛代碼:
def start_requests(self):
settings = get_project_settings()
ids = settings.get('IDS', None)
for i, id in enumerate(ids):
yield FormRequest(
url=self._FORM_URL,
formdata={ 'id': id },
meta={'id': id},
)
def parse(self, response):
addr_xpath = '//div[@class="w80p left floatRight"]//text()'
addresses = response.xpath(addr_xpath).extract()
if not addresses:
raise DropItem("Can't find address")
item = MyItem()
item['address'] = ', '.join(addresses)
return item
這是我的項目代碼:
class MyItem(scrapy.Item):
id = scrapy.Field()
address = scrapy.Field()
我的一些項目具有不同的ID,但相同的地址,即使網頁我爲不同的ID返回不同的地址。我認爲結果會並行返回,並意外地相互覆蓋。
我在做什麼錯?我正在使用Scrapy v0.24.6和Twisted v16.6.0。
爲什麼要使用scrapy v0.24.6?這就像現在5歲。在[最新PyPI上的版本是1.3(https://pypi.python.org/pypi/Scrapy/1.3.0) – Granitosaurus