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岁了。这个