如何使用 scrapy 抓取带有 xpath 或其他方式的 JSON 元素标签的值?

How to use scrapy to scrape the value of a HTML element tag which is JSON with xpath or in another way?

提问人:hanku8 提问时间:11/9/2023 最后编辑:hanku8 更新时间:11/9/2023 访问量:18

问:

我使用 Scrapy 抓取页面,到目前为止,我在 XPATH 上取得了成功,但我对那个页面有点挣扎。我正在尝试获取dimensionsImageKey的值:

<img id="fullViewImg" class="img-responsive"
             onerror="this.onerror = null; this.src = '/prod/Images/noImageAvalBig.jpg';"
             dimensionsImageKey="[{"k":"37081793~SID~B342~S0~I1~RW2576~H1932~TH0","w":2576,"h":1932,"sn":"","sid":37081793,"b":342,"in":1,"i":0,"s":0,"ar":1.33,"art":1.35,"tw":96,"th":72},{"k":"37081793~SID~B342~S0~I2~RW2576~H1932~TH0","w":2576,"h":1932,"sn":"","sid":37081793,"b":342,"in":2,"i":1,"s":0,"ar":1.33,"art":1.35,"tw":96,"th":72])">

我得到的最好的是

response.xpath('//*[@dimensionsimagekey]/@dimensionsimagekey').getall()

它只返回'[{

似乎它只返回两个双引号之间的内容。有没有办法用 Scrapy 和 Xpath 实现这一目标?

json xpath scrapy

评论

0赞 GrumpyCrouton 11/9/2023
给定的 HTML 对我来说似乎无效,因为 json 中的引号没有被转义。dimensionsImageKeydimensionsImageKey="[{"
0赞 hanku8 11/9/2023
你是对的,只是有更多的数据,我只拿了前两个。我按原样关闭了它,尽管它们仍然没有逃脱,但这直接来自源头。
0赞 hanku8 11/9/2023
src 标签位于 JSON 之后,是用 Javascript 生成的,这就是为什么它看起来无效的原因
1赞 GrumpyCrouton 11/9/2023
但是查看此元素的外部工具将无法区分,因为它没有正确转义
0赞 Michael Kay 11/9/2023
该属性以遇到的第二个引号结尾,因此该工具的行为非常合理。垃圾进,垃圾出。

答: 暂无答案