C# 和 Html 敏捷包
C# and Html Agility Pack
我有多个文件,我必须从中提取包含数据的 tables。问题是 tables 没有 ID,所以我必须根据内容(在每个文件中都是不变的)进行搜索。每个文件中有多个 table,感兴趣的 table 没有常量 XPath。
<table border="0" cellspacing="0" cellpadding="0" style="BORDER-COLLAPSE: collapse" bordercolor="#111111">
<tbody>
<tr>
<td class="s">CONSTANT_TEXT</td>
<td class="l">CHANGING_VALUE</td>
</tr>
<tr>
<td class="s"> </td>
<td class="l"><a style="" id="CONSTANT_ID" href="mailto: XXXX</a>
</td>
</tr>
</tbody>
</table>
我如何:
1. 根据 CONSTANT_TEXT CONSTANT_TEXT , return 第二个 TD CHANGING_VALUE 的值搜索,不知道路径(它没有 ID,它的位置从文件中更改归档)。
2.根据CONSTANT_TEXTCONSTANT_TEXT,return那个TD
的Parenttable进行搜索
我所做的是使用 Html Agility Pack 搜索和 return CONSTANT_TEXT ,然后向上迭代 XPath 直到达到 Table。
var output= document.DocumentNode.SelectNodes("//a[@id='CONSTANT_ID']");
output[0].XPath ="/html[1]/body[1]/table[1]/thead[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[2]/td[2]/a[1]"
我的计划是迭代每个输出并获得最低 table 出现的 XPath,table[1],然后提取数据。
谢谢,
麦克
严格来说,您需要以下 XPath:
Search based on the CONSTANT_TEXT CONSTANT_TEXT , return the value of
2nd TD CHANGING_VALUE
//td[.="CONSTANT_TEXT"]/following-sibling::td[1]/text()
输出:CHANGING_VALUE
Search based on CONSTANT_TEXT CONSTANT_TEXT , return the Parent table of that TD
//td[.="CONSTANT_TEXT"]/ancestor::table[1]
输出:<table> element
我有多个文件,我必须从中提取包含数据的 tables。问题是 tables 没有 ID,所以我必须根据内容(在每个文件中都是不变的)进行搜索。每个文件中有多个 table,感兴趣的 table 没有常量 XPath。
<table border="0" cellspacing="0" cellpadding="0" style="BORDER-COLLAPSE: collapse" bordercolor="#111111">
<tbody>
<tr>
<td class="s">CONSTANT_TEXT</td>
<td class="l">CHANGING_VALUE</td>
</tr>
<tr>
<td class="s"> </td>
<td class="l"><a style="" id="CONSTANT_ID" href="mailto: XXXX</a>
</td>
</tr>
</tbody>
</table>
我如何: 1. 根据 CONSTANT_TEXT CONSTANT_TEXT , return 第二个 TD CHANGING_VALUE 的值搜索,不知道路径(它没有 ID,它的位置从文件中更改归档)。 2.根据CONSTANT_TEXTCONSTANT_TEXT,return那个TD
的Parenttable进行搜索我所做的是使用 Html Agility Pack 搜索和 return CONSTANT_TEXT ,然后向上迭代 XPath 直到达到 Table。
var output= document.DocumentNode.SelectNodes("//a[@id='CONSTANT_ID']");
output[0].XPath ="/html[1]/body[1]/table[1]/thead[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[2]/td[2]/a[1]"
我的计划是迭代每个输出并获得最低 table 出现的 XPath,table[1],然后提取数据。
谢谢, 麦克
严格来说,您需要以下 XPath:
Search based on the CONSTANT_TEXT CONSTANT_TEXT , return the value of 2nd TD CHANGING_VALUE
//td[.="CONSTANT_TEXT"]/following-sibling::td[1]/text()
输出:CHANGING_VALUE
Search based on CONSTANT_TEXT CONSTANT_TEXT , return the Parent table of that TD
//td[.="CONSTANT_TEXT"]/ancestor::table[1]
输出:<table> element