我想用 class span 12 和 <p>Automotive Brands</p> 提取 div 标签内的所有链接

I wan to extract all the links inside the div tag with class span12 and <p>Automotive Brands</p>

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 中提取所有链接 class span12 但我只想要 div 中包含汽车品牌 PTag 的链接。帮助我实现这一目标。

以下 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();

如果你喜欢。