lxml xpath path / text()在'。'时无法返回值。存在于scrapy中

时间:2017-08-03 11:05:29

标签: xpath text scrapy lxml

当你尝试返回不包含'。'的东西时,scrapy中的lxml模块工作正常。使用text()函数的字符,但是当它们包含'。'时例如'11 .14'查询返回' - '。怎么解决这个问题?

这是我的代码:

stock_price = hxs.xpath('//td[@id="gt1"]//text()').extract()

目标html如下所示:

<td id="gt1" class="txtl green">11.14</td>

只有一个gt1,它总是返回

'-'

而不是

'11.14'

为什么呢?源网址为http://quote.eastmoney.com/sz000001.html

尝试使用其他几个数据源,只要文本字段包含'。',它就会返回' - ',否则一切都很好。这是环境问题吗?

2 个答案:

答案 0 :(得分:1)

那是因为在页面源中,td标记内部实际上有' - '。您在浏览器中看到的最终结果可能是使用开发人员工具看到的,可能是由某些JavaScript提供的。所以你可以使用例如启动以呈现页面并从响应中提取if,或者如果不使用某些API则尝试浏览页面。当我在XHR请求中查看Chrome中的开发人员工具时,我可以看到一些电话。

答案 1 :(得分:0)

问题可能正在出现,因为您同时使用了// text()和extract()。

下面的代码在java中对我来说很好。改变你的xpath如下

    driver.get("http://quote.eastmoney.com/sz000001.html");
    System.out.println("5");
    String aa=driver.findElement(By.xpath("//td[@id='gt1']")).getText();
    System.out.println(aa);

enter image description here