我想用 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();
如果你喜欢。
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();
如果你喜欢。