python - 在scrapy shell上得到空方括号
问题描述
我得到这个 xpath 的空方括号 response.xpath( "//div[@class='c16H9d']").extract()
这是网址https://www.daraz.com.bd/audio/?spm=a2a0e.home.cate_2.2.49c74591NNpWDU
我的 xpath 没有错,那么为什么我得到这个空方括号?
>>>scrapy shell "https://www.daraz.com.bd/audio/?spm=a2a0e.home.cate_2.2.49c74591NNpWDU"
>>>response.xpath( "//div[@class='c16H9d']").extract()
>>>[]
解决方案
我看到您使用的是scrapy shell,是的,确实该类确实作为第一项存在。但是,如果您查看完整的 HTML,您会看到这个标签
<script type="application/ld+json">
这似乎包含用于填充页面前端的 JSON。所以你可以做这样的事情,然后导入 json 并使用 json 加载将其加载到 python 对象中。
response.css('script::text').extract()[-1]
最后一个脚本元素文本包含页面产品列表的所有 json。
import json
data = json.loads(response.css('script::text').extract()[-1])
item_list = data['itemListElement']
for each in item_list:
print(each['name'], each['price'])
推荐阅读
- bazel - Bazel - 取决于生成的输出
- javascript - 设置动态创建的表格的列宽以适合内容
- c# - 我可以从 ASP.NET MVC 中的 Model.edmx 文件中获取存储过程脚本吗?
- agda - 目标隐含的参数定理
- javascript - 编辑表格中的单元格时如何更改字体大小
- api - 如何限制对anypoint平台公共url的访问
- php - Laravel - 查询以多对多关系连接表
- php - 警告:尝试访问 C:\xampp\htdocs\sss\wp-content\pluginson 第 93 行中 bool 类型值的数组偏移量
- c++ - 如何在 VSCode 中禁用来自 CPP 编译器的特定编译警告?(最好使用构建选项)
- ruby - 为什么模块内的 ruby 类不能与常规类具有相同的范围?