如何使用Scrapy请求并在同一位置获得响应?

时间:2018-07-13 05:26:28

标签: python callback scrapy

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

我已使用requests.get()编写了搜寻器,并在scrapy.selector.Selector()中使用了响应并解析了数据。

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

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

我知道scrapy.Request()需要名为callback=self.callbackparsefunction的参数 当scrapy生成响应以处理生成的响应时,将调用该方法。我不想使用回调函数,而要在当前函数中处理响应。

或者有什么方法可以将回调函数的响应返回到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

1 个答案:

答案 0 :(得分:0)

看看scrapy-inline-requests软件包,我认为这正是您所需要的。