首页 > 解决方案 > 如何使用 Scrapy Request 并在同一个地方获得响应?

问题描述

我正在编写scrapy爬虫来从电子商务网站上抓取数据。该网站有颜色变体,每个变体都有自己的价格、尺寸和该尺寸的库存。要获取变体的价格、尺寸和库存,需要访问变体(颜色)的链接。并且所有数据都需要在一条记录中。我尝试过使用请求,但速度很慢,有时无法加载页面。

我已经使用和解析数据requests.get()中的响应编写了爬虫。scrapy.selector.Selector()

我的问题是,有什么方法可以使用 scrapy.Request() 来获取我在回调函数中使用它的响应。我需要在与下面相同的位置进行响应(如下所示),

response = scrapy.Request(url=variantUrl)
sizes = response.xpath('sizesXpath').extract()

我知道 当scrapy生成响应以处理生成的响应时将调用scrapy.Request()require参数。callback=self.callbackparsefunction我不想使用回调函数我想在当前函数中处理响应。

或者有什么方法可以将回调函数的响应返回到scrapy.Request()如下所示的函数(如下所示),

def parse(self, response):
    variants = response.xpath('variantXpath').extract()
    for variant in variants:
        res = scrapy.Request(url=variant,callback=self.parse_color)
        # use of the res response

def parse_color(self, response):
    return response

标签: pythoncallbackscrapy

解决方案


看看scrapy-inline-requests包,我认为这正是您正在寻找的。


推荐阅读