2011-08-13 78 views
1

我屏幕抓取其中包含一个HTML页面:匹配xpath文本?

<table border=1 class="searchresult" cellpadding=2> 
<tr><th colspan=2>Last search</th></tr> 
<tr><th align=left>Search term</th><td>xxxxxx</td></tr> 
<tr><th align=left>Result</th><td>yyyyyyyy/td></tr> 
</table> 

我想写一个XPATH表达式,得到我含有“YYYYYYYY”数据单元。我已经得到尽可能

.//table[@class='searchresult']//tr/th 

它得到我的表中的所有表头节点的列表。我可以在用户代码在它们之间迭代,查找其的.text是“结果”的一个,然后调用.getnext()上获得的表格数据。但是,通过编写更具体的XPATH模式,是否有更简单的方法来实现这一点?好像应该有,但我还没有得到我的头,远远各地XPATH尚未弄清楚如何。

如果它的事项,我在用Python LXML这样做。

回答

1

.//table[@class='searchresult']//tr/td[preceding-sibling::th]可能给你你所需要的。上半自动生成XPath语句像这样的,专门为屏幕抓取目的

两个综合性的文件可以在这里找到:

http://tobiasanton.com/Tobias_Anton/Academia.html

+1

更可能的是,你要寻找的XPath语句可能是:.//table[@class ='searchresult'] // tr/td [在前同步::节点[1] =“结果”] –

0

使用

//table/tr[last()]/td 

这将选择任何td元素是任何tr是最后tr孩子任何的0123的子在这个XHTML文档中。

这可以根据是否只存在一个table的XHTML文档中选择一个以上的td元件。 如果存在多个table元素,则需要使此表达式更加精确。

例如,如果有问题的table是文档中的第一个,使用

(//table)[1]/tr[last()]/td