Python Scrapy Xpath:从img节点提取@title

Python Scrapy Xpath:从img节点提取@title,python,scrapy,scrapy-shell,Python,Scrapy,Scrapy Shell,我想根据您在本页的投票部分,从主要注释中提取@title: 我已经获取了HTML,然后在scrapy shell上尝试了这行代码,但输出结果是None: response.xpath('//*[@id="userMainNotes"]/div/img/@title).extract_first() 我做错了什么?如果你检查源代码(Ctrl+U),你会发现: <div title="96:241;171:117;33:103;34:103;41:70;128:63;4:59;182:59;

我想根据您在本页的投票部分,从主要注释中提取
@title

我已经获取了HTML,然后在
scrapy shell
上尝试了这行代码,但输出结果是
None

response.xpath('//*[@id="userMainNotes"]/div/img/@title).extract_first()
我做错了什么?

如果你检查源代码(
Ctrl+U
),你会发现:

<div title="96:241;171:117;33:103;34:103;41:70;128:63;4:59;182:59;170:58;75:56;191:48;21:39;77:39;14:28" id="userMainNotes">Loading...</div>
正在加载。。。
这意味着上面的
是由Javascript呈现的,这就是代码无法工作的原因

这会有用的

response.xpath('//span[contains(@id, "note")]/img[@rel]/@title')
不要忘记将USER AGENT设置为您的settings.py


谢谢gangabass,你建议用什么有效的方法来抓取大量javascript页面?谢谢Yash,你的代码很有效。但是,我可以请您澄清您的代码行背后的逻辑吗?特别是img[@rel]部分所代表的…@AnhQuocVo欢迎您,当然我可以告诉您背后的逻辑您可能已经根据chrome/firefox的开发者检查工具中的html节点安排编写了xpath。如果我错了,请纠正我。嗯,这并不总是和你得到的回应一样。因为浏览器已经编译了它。这将重新排列python层请求无法执行的节点。是的,您是正确的,我直接从inspect工具复制了xpath。对于其他一些元素,如产品名称,这已经起作用了。。。但不是香水味。我选择了你的答案作为这个问题的解决方案,但是我的声誉很低,因此我无法投票。现在,如果你想编写100%正确的xpath,那么你必须保存响应并根据响应体编写xpath。你可以参考这个