【问题标题】:Agility Helper Html retrieving p/paragraphs text until another anchor is reached敏捷助手 Html 检索 p/段落文本,直到到达另一个锚点
【发布时间】:2020-04-05 00:55:56
【问题描述】:

我正在使用 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&nbsp;
CONTENT2&nbsp;
CONTENT3&nbsp;
CONTENT4
</p>
<p>CONTENT5.</p>
<p>CONTENT6.</p>
<p>CONTENT8.</p>

<p>
<a href="3.shtml#Top" target="_top">PART 3</a>
CONTENT1&nbsp;
CONTENT2&nbsp;
CONTENT3&nbsp;
CONTENT4.
</p>

所以现在使用我的代码,它会分别读取每个段落的 P 文本。

文本 #1 是

内容1 内容2

TEXT #2 是 内容3。

我想读这个 文本#1 是 内容1 内容2 内容3。

这是动态的,# 的段落会发生变化。

某种检查以确保在点击锚点之前它会读取所有段落/InnerTexts 并知道它应该在同一个 Text # 中。

【问题讨论】:

    标签: c# asp.net html-parsing html-agility-pack


    【解决方案1】:

    你可以这样实现:

        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 + " ");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 2013-03-04
      • 2015-02-16
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      相关资源
      最近更新 更多