HtmlWeb web = new HtmlWeb();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HtmlDocument doc = web.Load("https://www.fcagroup.com/en-US/group/regions/Pages/northamerica.aspx");
var foundAppropriateMetaTag = false;
var divs = doc.DocumentNode.SelectNodes("//div[contains(@class,'span12')]");
var linksOnPage = from lnks in divs.Descendants()
where lnks.Name == "a" &&
lnks.Attributes["href"] != null &&
lnks.InnerText.Trim().Length > 0
select new
{
Url = lnks.Attributes["href"].Value,
Text = lnks.InnerText,
};我已经尝试了以上,但它是提取所有的链接从所有的div类span12,但我只想要内部的链接,其中包含汽车品牌PTag。帮我实现这一点。
发布于 2020-03-17 18:35:37
在var divs = doc.DocumentNode.SelectNodes("//div[contains(@class,'span12')]");下面,您可以添加以下代码。
var autoNodes = new List<HtmlNode>();
foreach (var div in divs)
{
if (div.ChildNodes.Any(c => c.InnerText.Contains("Automotive Brands")))
{
autoNodes.Add(div);
}
}
var links = new List<KeyValuePair<string, string>>();
foreach (var node in autoNodes)
{
var nodeLinks = node.Descendants().Where(c => c.Name.Equals("a")
&& c.Attributes["href"].Value.Contains("brands")
&& !string.IsNullOrEmpty(c.InnerText.Trim()));
links.AddRange(nodeLinks.Select(nl =>
new KeyValuePair<string, string>(nl.Attributes["href"].Value, nl.InnerText)));
}这是可读的版本。
您可以将其转换为
var autoNodes = divs.Where(div => div.ChildNodes.Any(c => c.InnerText.Contains("Automotive Brands"))).ToList();如果你愿意的话。
https://stackoverflow.com/questions/60719796
复制相似问题