1 回答
TA贡献1725条经验 获得超7个赞
您可以使用 HTMLAgilityPack使其更容易,只需使用 NuGet 将其包含在您的项目中。
使用 NuGet 添加 HTMLAgilityPack
转到Package Manager Console并键入Install-Package HtmlAgilityPack -Version 1.11.3
安装后,您可以像下面那样提取 Urls。
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(@"put html string here");
var listOfUrls = new List<string>();
doc.DocumentNode.SelectNodes("//a").ToList()
.ForEach(x=>
{
//Use HasClass method to filter elements
if (!string.IsNullOrEmpty(x.GetAttributeValue("href", ""))
&& x.HasClass("result-title") && x.HasClass("js-result-title"))
{
listOfUrls.Add(x.GetAttributeValue("href", ""));
}
});
listOfUrls.ForEach(x => Console.WriteLine(x));
编辑
添加&& x.HasClass("result-title") && x.HasClass("js-result-title")到仅显示那些具有类 result-title 和 js-result-title 的元素。
其它的办法
更短的另一种获取过滤值的方法。
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(@"put html string here");
var listOfUrls = doc.DocumentNode.Descendants("a")
.Where(x => x.Attributes["class"] != null
&& x.Attributes["class"].Value == "result-title js-result-title")
.Select(x => x.GetAttributeValue("href", "")).ToList();
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报