python - 如何使用 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
解决方案
看看scrapy-inline-requests包,我认为这正是您正在寻找的。
推荐阅读
- html - 调整容器内 3 个 div 中的图像大小
- python - 如何从动作中获取结果并弹出不同的消息框?
- ios13 - 如何从 iOS 13 现在的 viewController 功能动画和视图返回到以前的 iOS 版本?
- node.js - 在使用 echo 手动执行之前,无法使用 node-usb 写入 USB 设备
- java - Android Studio:如何解决这个执行错误
- python - 字典到日期时间
- javascript - 查询时的 DynamoDB 重新映射列表属性项
- sql - 如何在 Sqlite 中找到两个变量之间的相关性?
- selenium - Scrapy & Selenium - 加载下一页
- javascript - Laravel(vue 和 vuex)添加数据总是返回未经授权的