HTML 민첩성 팩을 사용하여 일부 HTML을 구문 분석하려고합니다. 다음 코드 스 니펫은 필자가 필요로하는 정보가 들어있는 테이블 요소를 선택하지만 더 깊이 파고 들어야합니다.NEXT <td> 요소는 어떻게 선택합니까?
테이블의 InnerHtml을 얻은 후에는 innertext 값이 "Field # 2"인 <td>
을 찾을 계획입니다. 하지만 다음으로 NEXT <td>
의 innertext를 선택해야합니다. 이 예제에서 값 110이 필요합니다. 어떻게해야합니까? 주어진 텍스트로 td
모든 노드를 찾아 -
doc.DocumentNode.SelectNodes(
"//table[contains(@class,'data')]/tr/" +
"td[/strong/text()='Field #2:']" +
"/following-sibling:td");
본질적 : 민첩성 팩을 지원하지만, XPath는 당신이 /following-sibling
을 사용하여 다음 형제를 조회 할 수
foreach (var x in doc.DocumentNode.SelectNodes("//table[contains(@class,'data')]"))
{
// psuedo code - search for td and use "contains" on the inner text/html.
// Then, grab the next td inner html.
Console.WriteLine(x.InnerHtml);
}
<tr>
<td width="158"><strong>Field #1:</strong></td>
<td width="99">1</td>
<td width="119"><strong>Field #2:</strong></td>
<td width="176">110</td>
</tr>
<tr>
<td width="158"><strong>Field #3:</strong></td>
<td width="99">85</td>
<td width="119"><strong>Field #4:</strong></td>
<td width="176">-259.34</td>
</tr>
<tr>
<td width="158"><strong>Field #5:</strong></td>
<td width="99">1</td>
<td width="119"><strong>Field #6:</strong></td>
<td width="176">110</td>
</tr>
<tr>
<td width="158"><strong>Field #7:</strong></td>
<td width="99">12</td>
<td width="119"><strong>Field #8:</strong></td>
<td width="176">123.23</td>
</tr>
거의 정확해야합니다. '.' '/ strong /'와 'following-sibling'앞에 ':'가 두 개 있어야합니다. 그렇다면 잘 작동합니다. – shriek