我有一些HTML并希望从中获取一些数据。
HTML按以下方式构建
<div class="someClass"><span class="someOtherClass">Text</span></div>
<table>
<tbody>
<tr>
<td>label</td>
<td>data</td>
</tr>
<tr>
<td>label</td>
<td>data</td>
</tr>
<tr>
<td>label</td>
<td>data</td>
</tr>
</tbody>
</table>
<div class="someClass"><span class="someOtherClass">Text</span></div>
<table>
<tbody>
<tr>
<td>label</td>
<td>data</td>
</tr>
<tr>
<td>label</td>
<td>data</td>
</tr>
<tr>
<td>label</td>
<td>data</td>
</tr>
</tbody>
</table>
<div class="someClass"><span class="someOtherClass">Text</span></div>
我需要能够抓取位于span =&#34; someOtherClass&#34;的范围内的Text值。 (我已经实施了这部分)
然后我需要能够直接在div下面刮桌子。由于&#34;父母&#34; div实际上并不包含该表,我在实现这一点时遇到了一些问题。
答案 0 :(得分:4)
我需要能够刮取范围
中的Text值
你不需要正则表达式。 Xpath查询就足够了。
var text = doc.DocumentNode
.SelectNodes("//span[@class='someOtherClass']")
.Select(x => x.InnerText)
.ToList();
然后我需要能够直接在div下面刮桌子。
使用类似的xpath
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlstring);
var tables = doc.DocumentNode
.SelectNodes("//span[@class='someOtherClass']/following::table").ToList();
foreach (var table in tables)
{
var list = table.Descendants("tr")
.Select(tr => tr.Descendants("td")
.Select(td => td.InnerText).ToList())
.ToList();
}