Web scraping 当请求同时运行时,Scrapy是否会过度写入结果?
我一直在运行刮板,并注意到它返回重复的结果。换句话说,它是从另一个项目为一个项目分配结果 我的设置文件有Web scraping 当请求同时运行时,Scrapy是否会过度写入结果?,web-scraping,scrapy,Web Scraping,Scrapy,我一直在运行刮板,并注意到它返回重复的结果。换句话说,它是从另一个项目为一个项目分配结果 我的设置文件有并发\u请求=100,并且没有设置下载\u延迟 这是我的蜘蛛代码: def start_requests(self): settings = get_project_settings() ids = settings.get('IDS', None) for i, id in enumerate(ids): yield FormRequest(
并发\u请求=100
,并且没有设置下载\u延迟
这是我的蜘蛛代码:
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。这可能是因为cookie会话。要在一个spider中使用多个cookie会话,您需要在请求中使用
cookiejar
元参数:
for i, url in enumerate(urls):
yield scrapy.Request(url, meta={'cookiejar': i},
callback=self.parse_page)
根据:
通过使用cookiejar请求元密钥,支持为每个蜘蛛保留多个cookie会话。默认情况下,它使用一个cookie jar(会话),但您可以传递一个标识符以使用不同的标识符
为什么要使用scrapy v0.24.6?现在已经5岁了。这个