首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想提取带有类span12和<p>Automotive品牌的div标记内的所有链接</p>

我想提取带有类span12和<p>Automotive品牌的div标记内的所有链接</p>
EN

Stack Overflow用户
提问于 2020-03-17 17:46:59
回答 1查看 41关注 0票数 1
代码语言:javascript
复制
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。帮我实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-17 18:35:37

var divs = doc.DocumentNode.SelectNodes("//div[contains(@class,'span12')]");下面,您可以添加以下代码。

代码语言:javascript
复制
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)));

}

这是可读的版本。

您可以将其转换为

代码语言:javascript
复制
var autoNodes = divs.Where(div => div.ChildNodes.Any(c => c.InnerText.Contains("Automotive Brands"))).ToList();

如果你愿意的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60719796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档