Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文本与xpath匹配?_Xpath_Lxml - Fatal编程技术网

将文本与xpath匹配?

将文本与xpath匹配?,xpath,lxml,Xpath,Lxml,我正在屏幕上抓取一个HTML页面,其中包含: <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>

我正在屏幕上抓取一个HTML页面,其中包含:

<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>
这将获得表中所有表头节点的列表。我可以在用户代码中迭代它们,找到.text为“Results”的那个,然后调用.getnext()来获取表数据。但是,有没有更干净的方法来编写更具体的XPATH模式呢?似乎应该有,但我还没有弄清楚XPATH是如何实现的


如果有必要的话,我会用Python和lxml来实现这一点。

//table[@class='searchresult']//tr/td[previous sibling::th]可能会满足您的需要

下面可以找到两篇关于半自动创建XPath语句的综合性文章,这篇文章专门用于屏幕抓取:


//table[@class='searchresult']///tr/td[previous sibling::th]可能会满足您的需要

下面可以找到两篇关于半自动创建XPath语句的综合性文章,这篇文章专门用于屏幕抓取:

使用

//table/tr[last()]/td
(//table)[1]/tr[last()]/td
这将选择任何
td
元素,该元素是任何
tr
的子元素,该子元素是此XHTML文档中任何
的最后一个子元素

这可能会选择多个
td
元素,具体取决于XHTML文档中是否只有一个
如果存在多个
元素,则需要使此表达式更精确

例如,如果所讨论的
表是文档中的第一个,请使用

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

//table/tr[last()]/td
(//table)[1]/tr[last()]/td
这将选择任何
td
元素,该元素是任何
tr
的子元素,该子元素是此XHTML文档中任何
的最后一个子元素

这可能会选择多个
td
元素,具体取决于XHTML文档中是否只有一个
如果存在多个
元素,则需要使此表达式更精确

例如,如果所讨论的
表是文档中的第一个,请使用

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

更可能的是,您要查找的XPath语句可能是:。//table[@class='searchresult']//tr/td[previous sibling::node[1]=“Result”]更可能的是,您要查找的XPath语句可能是:。//table[@class='searchresult']//tr td[previous sibling::node[1]=“Result”]