C# 位于div正下方的Scrape html
我有一些html,想从中提取一些数据 HTML的结构如下所示C# 位于div正下方的Scrape html,c#,html,xpath,C#,Html,Xpath,我有一些html,想从中提取一些数据 HTML的结构如下所示 <div class="someClass"><span class="someOtherClass">Text</span></div> <table> <tbody> <tr> <td>label</td> <td>data</td> </tr>
<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 where class=“someOtherClass”(我已经实现了这一部分)中的文本值
然后我需要能够直接在div下面刮表。因为“parent”div实际上不包含表,所以在实现这一点时遇到了一些问题
我需要能够刮取位于跨度中的文本值
你不需要正则表达式。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();
}
您的html似乎没有格式错误。htmlagilitypack的HTMLDocument应该能够找到要从其DOM中提取的结构,您尝试过吗?如果您仍然想使用正则表达式-请先阅读所有文章。@EitanSeri Levi-我编辑了您的文章,删除了文章正文中的正则表达式标记和正则表达式详细信息。请接受编辑。尽管有些人只监视某些标签和标题,但要意识到这一点。以后请多加小心。我相信Xpath帖子有一百万个副本。当我有时间的时候,我会把它标记为一个副本。祝你好运!!英俊的solution@sln别担心。HtmlAgilityPack在解析格式错误的htmls时非常灵活:)@sln应该是这样的。我相信你已经读过这个著名的答案@sln Nice,我希望没有人需要对它进行更改。这只是第一级通用标记解析(包含不可见的内容)。我用这个做了一个SAX解析器。我也有数百个刮板模块来查找具体数据。它在格式错误的html上从不犹豫,而且速度极快。