提取标记内的数据
本文关键字:数据 提取 | 更新日期: 2023-09-27 18:10:56
我读了一些关于这个主题的帖子,我试图实现答案,但我没有我想要的输出。
HTML
<div class="span-8">
<dl>
<dt>
<a title="A Coruña" href="http://www.paginasamarillas.es/all_a-coru%C3%B1a_.html"> A Coruña</a>
</dt>
<dt>
<a title="Álava" href="http://www.paginasamarillas.es/all_alava_.html"> Álava</a>
</dt>
<dt>
<a title="Albacete" href="http://www.paginasamarillas.es/all_albacete_.html"> Albacete</a>
</dt>
<dt>
<a title="Alicante" href="http://www.paginasamarillas.es/all_alicante_.html"> Alicante</a>
</dt>
...
...
我想得到"巴塞罗那","阿利坎特","阿尔巴塞特"等。所以,我尝试下面的代码:
var nodos = doc.DocumentNode.SelectNodes("//div[@class='container']");
和
var nodos = doc.DocumentNode.SelectNodes("//a[@title]");
或
var nodos = doc.DocumentNode.SelectNodes("//div[@class='span-8']");
但不工作,这就像如果类"容器",属性"标题"或类"span-8"不存在于页面中。也可以尝试其他的变体。存在其他的"div"与类'container',和其他"a"与属性'title'在代码中,提取很好,但这不是我想要的。
编辑对不起,我解释错了。不是一个字,是一组数据。我修改了上面的HTML代码我已经测试了你的样本html和它的工作:
string html = @"<div class=""container"">
<div class=""span-24"">
<div class=""span-8"">
<dl>
<dt>
<a title=""A Coruña"" href=""http://www.example.com/all_example.html""> Barcelona</a>
</dt>
</dl>
</div>
</div>
</div>";
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var div = doc.DocumentNode.SelectSingleNode("//div[@class='span-8']");
if(div != null)
{
List<string> linkTexts = div.Descendants("a")
.Select(a => a.InnerText)
.ToList(); // one item " Barcelona"
}