我试图从网站上提取链接,我想要的HTML如下所示:
<div class="default-2-3">
<h4>
<a href="/en/news/esports/esports-editorial/na-lcs-week-8-tease-tsm">NA LCS Week 8 Tease: TSM</a>
</h4>
我的测试代码如下:
string mainURL = "http://na.leagueoflegends.com/en/news/";
HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load(mainURL);
var findClass = doc.DocumentNode.Descendants("div")
.Where(d => d.Attributes.Contains("class") &&
d.Attributes["class"].Value.Contains("default-2-3"));
MessageBox.Show(findClass.ElementAt(1).ToString());
目前,消息框显示:
HtmlAgilityPack.htmlNode
我的代码基于finding specific link from website,我不熟悉使用HTMLAgilityPack而不仅仅是复制XPath。
作为参考,我尝试提取信息的网站是:http://na.leagueoflegends.com/en/news/
答案 0 :(得分:1)
你已接近最后一步。再多一点。
var findClass = doc.DocumentNode.Descendants("div").Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("default-2-3")).Select(_ => _.Descendants("a").FirstOrDefault()?.Attributes["href"]);
答案 1 :(得分:0)
实际上有多个div具有相同的class=default-2-3
你试图通过这样做来获取你能得到的第一个:
var href = doc.DocumentNode.SelectNodes(".//div[@class='default-2-3']//h4//a[@href]").Select(x=>x.Attributes["href"].Value);