首页 > 解决方案 > 在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()
>>>[]

标签: pythonxpathweb-scrapingscrapyscrapy-splash

解决方案


我看到您使用的是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'])

推荐阅读