在 h2 标签 HtmlAgilityPack 之后查找斜体段落文本
Find italic paragraph text after h2 tag HtmlAgilityPack
我想抓取所有斜体和粗体文本(歌名)毕竟h2 标签。这是 html 代码
<h2>"Artist Name 1"></h2>
<p><br><b><i>Song Name 1</i>.</b> 2008.
<br><b>Music</b> Name Name
<br><b>Lyrics:</b> Name Name
<p><b><i>Song Name 2</i></b> 2008.
<br><b>Music</b> Name Name
<br><b>Lyrics:</b> Name Name
<h2>"Artist Name 2"></h2>
<p><br><b><i>Song Name 1</i>.</b> 2009.
<br><b>Music</b> Name Name
<br><b>Lyrics:</b> Name Name
<p><b><i>Song Name 2</i></b> 2009.
<br><b>Music</b> Name Name
<br><b>Lyrics:</b> Name Name
...
我在 c# 中尝试过类似的东西
string Url = "url/page.html";
HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load(Url);
var headers = doc.DocumentNode.SelectNodes("//h2");
if (headers != null)
{
foreach (HtmlNode item in headers)
{
textBox1.AppendText(item.InnerText + "\n");
}
}
我可以抓取所有 h2 文本(艺术家姓名)。但我需要一点帮助来继续代码。
很简单我改成这个:
var headers = doc.DocumentNode.SelectNodes("//h2");
对此:
var headers = doc.DocumentNode.SelectNodes("//b/i");
已经过测试,可以正常使用。
只获取歌曲名称:
结果:
Song name 1
Song name 2
如果您想要更复杂的内容,例如艺术家姓名和 his/her 歌曲。它是有效的。
var headers = doc.DocumentNode.SelectNodes("//h2");
if (headers != null)
{
foreach (HtmlNode item in headers)
{
Console.WriteLine(item.InnerText); //Artist Name
var next = item.NextSibling;
while (next != null)
{
if (next.FirstChild != null && next.FirstChild.Name == "i")
{
Console.WriteLine(next.InnerText); //Song Name for artist
}
if (next.Name == "h2")
{
break;
}
next = next.NextSibling;
}
}
}
结果是:
我想抓取所有斜体和粗体文本(歌名)毕竟h2 标签。这是 html 代码
<h2>"Artist Name 1"></h2>
<p><br><b><i>Song Name 1</i>.</b> 2008.
<br><b>Music</b> Name Name
<br><b>Lyrics:</b> Name Name
<p><b><i>Song Name 2</i></b> 2008.
<br><b>Music</b> Name Name
<br><b>Lyrics:</b> Name Name
<h2>"Artist Name 2"></h2>
<p><br><b><i>Song Name 1</i>.</b> 2009.
<br><b>Music</b> Name Name
<br><b>Lyrics:</b> Name Name
<p><b><i>Song Name 2</i></b> 2009.
<br><b>Music</b> Name Name
<br><b>Lyrics:</b> Name Name
...
我在 c# 中尝试过类似的东西
string Url = "url/page.html";
HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load(Url);
var headers = doc.DocumentNode.SelectNodes("//h2");
if (headers != null)
{
foreach (HtmlNode item in headers)
{
textBox1.AppendText(item.InnerText + "\n");
}
}
我可以抓取所有 h2 文本(艺术家姓名)。但我需要一点帮助来继续代码。
很简单我改成这个:
var headers = doc.DocumentNode.SelectNodes("//h2");
对此:
var headers = doc.DocumentNode.SelectNodes("//b/i");
已经过测试,可以正常使用。
只获取歌曲名称:
结果:
Song name 1
Song name 2
如果您想要更复杂的内容,例如艺术家姓名和 his/her 歌曲。它是有效的。
var headers = doc.DocumentNode.SelectNodes("//h2");
if (headers != null)
{
foreach (HtmlNode item in headers)
{
Console.WriteLine(item.InnerText); //Artist Name
var next = item.NextSibling;
while (next != null)
{
if (next.FirstChild != null && next.FirstChild.Name == "i")
{
Console.WriteLine(next.InnerText); //Song Name for artist
}
if (next.Name == "h2")
{
break;
}
next = next.NextSibling;
}
}
}
结果是: