Scrapy 请求得到一些响应,但不是全部

Posted

技术标签:

【中文标题】Scrapy 请求得到一些响应,但不是全部【英文标题】:Scrapy request get some responses, but not all 【发布时间】:2020-10-21 03:09:27 【问题描述】:

我正在抓取一个在同一个

我正在使用这种方式: response.xpath('/html/body/div[1]/div[2]/section/div/div[3]/div[2]/div/div[2]//div //文章//div[1]// a[re:test(@href,"pd")]//@href').getall()

它来自以下页面: https://www.lowes.com/pl/Bottom-freezer-refrigerators-Refrigerators-Appliances/4294789499?offset=36

【问题讨论】:

看来我们需要更多信息。 ***.com/help/how-to-ask 【参考方案1】:

好像部分html是动态加载的,所以scrapy看不到。数据本身存在于 html 中的 json 结构中。你可以尝试这样获取:

import json
# get the script with the data
json_data = response.xpath('//script[contains(text(), "__PRELOADED_STATE__")]/text()').extract_first()
# load the data in a python dictionary
dict_data = json.loads(json_data.split('window.__PRELOADED_STATE__ =')[-1])
items = dict_data['itemList']
print(len(items))  # prints 36 in my case
# go through the dictionary and get the product_urls
for item in items:
  product_url = item['product']['pdURL']
  ...

【讨论】:

以上是关于Scrapy 请求得到一些响应,但不是全部的主要内容,如果未能解决你的问题,请参考以下文章

Scrapy踩坑:请求无响应,requests正常

使用 telnet 的 HTTP 请求没有得到任何响应

scrapy-redis

Scrapy 扩展中间件: 针对特定响应状态码,使用代理重新请求

java中如何判断发送的请求是不是得到响应

小爬虫学习——Scrapy框架