我正在尝试使用python的scrapy框架刮掉网页上的隐藏字段:
<input class="currentTime" value="4888599" />
奇怪的是,在所有页面的大约40%中,它找不到输入字段的值。我尝试在我的浏览器中禁用javaScript来加载失败的页面(可能认为这是问题),但是这些值只是在失败的页面上填充。因此,不会使用javaScript ....
添加该值之前有过这个问题的人或可能有解决方案吗?我不知道为什么它找不到价值。我正在使用以下语法来抓取:
sel.css('.currentTime::attr(value)').extract()
该课程只在页面上提供一次,我正在从正文标签中搜索。因此,对我来说,这不是错误的道路。它只是那个在大多数时候都找不到的物体,所有其他物体都不是问题。
答案 0 :(得分:0)
而不是CSS属性,你应该更喜欢XPath - 它更强大,并允许你做一些事情,比如向后遍历树(对于父母,你可以再次下降)
并非您需要在给定示例中执行此操作,但XPath通常更可靠。
一个相当通用的xpath查询来做你想做的事情就像这样...(在节点可能有多个类名的情况下
//input[contains(concat(' ',normalize-space(@class),' '),' currentTime ')]/value/text()
更具针对性的例子是..
//input[@class="currentTime"]/value/text()