在 scrapy shell 上获取空方括号

getting empty square bracket on scrapy shell

我得到这个 xpath 的空方括号 response.xpath( "//div[@class='c16H9d']").extract()

这里是urlhttps://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 是的,class 确实作为第一项存在。但是,如果您查看完整的 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'])