我正在抓取一个网站,我需要从这个HTML文档中获取数值:
<td>
<span style=" color: red; font-weight: bold;"> 1.950</span>
</td>
<td> 3.400</td>
我需要提取1.950和3.400,但我无法弄清楚如何做,当一个值只在a中,而另一个值也有一个span。是否有一般方法来获取路径的父级和子级?我在scrapy
使用HtmlXPathSelector
框架。我可以使用路径/td/text()
作为一个,/td/span/text()
作为另一个,但我需要在一个查询中执行。如何实现这一目标?
答案 0 :(得分:4)
您可以尝试使用:/td//text()
来选择作为td
的后代的每个文本节点
答案 1 :(得分:2)
我认为你有两种方法可以解决这个问题。
使用Xpath
以下同胞::节点()
另一个是迭代所有tds(但这可能很讨厌)
我将以Xpath
为例给你一个例子span_text = hxs.select("/td/span/text()")
next = span_text.select('following-sibling::node()') #you should get 3.400 (or with this idea :P)
如果你有这个xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<td>
<span style=" color: red; font-weight: bold;">1.950</span>
</td>
<td>3.400</td>
</root>
并执行此xpath表达式:
//td/following-sibling::node()
您将获得 3.400
答案 2 :(得分:1)
你可以试试这个
.select("string()").extract()
它将提取所有没有任何html标签的文本