敏捷助手 Html 正在检索 p/paragraphs 文本,直到到达另一个锚点
Agility Helper Html retrieving p/paragraphs text until another anchor is reached
我正在使用 Agility Helper HTML,到目前为止我有这样的代码:
var linkWeb = new HtmlWeb();
var linkDoc = web.Load(link);
foreach (HtmlNode l in linkDoc.DocumentNode.SelectNodes("//p"))
{
Console.WriteLine("text #"+ i++= + l.InnerText);
}
所以这可以很好地读取网页段落文本,除了,我希望它读取所有合并的段落文本,直到到达另一个锚标记,或者如果您能想到更好的方法。
<p>
<a href="1.shtml#Top" target="_top">PART 1</a>
CONTENT1;
CONTENT2;
</p>
<p>CONTENT3.</p>
<p>
<a href="2.shtml#Top" target="_top">PART 2</a>
CONTENT1
CONTENT2
CONTENT3
CONTENT4
</p>
<p>CONTENT5.</p>
<p>CONTENT6.</p>
<p>CONTENT8.</p>
<p>
<a href="3.shtml#Top" target="_top">PART 3</a>
CONTENT1
CONTENT2
CONTENT3
CONTENT4.
</p>
所以现在使用我的代码,它会分别读取每个段落的 P 文本。
文本 #1 是
内容 1
内容 2
文本 # 2 是
内容 3.
我想读这个
文本 #1 是
内容1
内容2
内容 3.
这是动态的,段落数会发生变化。
某种检查以确保在点击锚点之前它读取所有段落/InnerTexts 并且知道它应该在同一个文本 # 中。
您可以这样实现:
foreach (HtmlNode l in linkDoc.DocumentNode.SelectNodes("//p"))
{
if (l.ChildNodes.Any(node => node.Name == "a"))
{
Console.WriteLine();
Console.Write("text #" + i++);
}
Console.Write(l.InnerText + " ");
}
我正在使用 Agility Helper HTML,到目前为止我有这样的代码:
var linkWeb = new HtmlWeb();
var linkDoc = web.Load(link);
foreach (HtmlNode l in linkDoc.DocumentNode.SelectNodes("//p"))
{
Console.WriteLine("text #"+ i++= + l.InnerText);
}
所以这可以很好地读取网页段落文本,除了,我希望它读取所有合并的段落文本,直到到达另一个锚标记,或者如果您能想到更好的方法。
<p>
<a href="1.shtml#Top" target="_top">PART 1</a>
CONTENT1;
CONTENT2;
</p>
<p>CONTENT3.</p>
<p>
<a href="2.shtml#Top" target="_top">PART 2</a>
CONTENT1
CONTENT2
CONTENT3
CONTENT4
</p>
<p>CONTENT5.</p>
<p>CONTENT6.</p>
<p>CONTENT8.</p>
<p>
<a href="3.shtml#Top" target="_top">PART 3</a>
CONTENT1
CONTENT2
CONTENT3
CONTENT4.
</p>
所以现在使用我的代码,它会分别读取每个段落的 P 文本。
文本 #1 是
内容 1 内容 2
文本 # 2 是 内容 3.
我想读这个 文本 #1 是 内容1 内容2 内容 3.
这是动态的,段落数会发生变化。
某种检查以确保在点击锚点之前它读取所有段落/InnerTexts 并且知道它应该在同一个文本 # 中。
您可以这样实现:
foreach (HtmlNode l in linkDoc.DocumentNode.SelectNodes("//p"))
{
if (l.ChildNodes.Any(node => node.Name == "a"))
{
Console.WriteLine();
Console.Write("text #" + i++);
}
Console.Write(l.InnerText + " ");
}