HTMLAgilityPack and HTML Page

本文关键字:Page HTML and HTMLAgilityPack | 更新日期: 2023-09-27 18:01:25

我有这个HTML页面:http://pastebin.com/ewN5NZis

我想尝试使用htmllagilitypack来获得这个结果:

列表1:Title1, Title2清单2:约翰,安东尼清单3:29/04/14、28/04/14

我想把数据存储在三个不同的。

我正在尝试:

        HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
        htmlDoc.OptionFixNestedTags = true;
        htmlDoc.LoadHtml(html);
        foreach (HtmlNode node in htmlDoc.DocumentNode.SelectNodes("//tr"))
        {
            res += node.InnerHtml;
        }

在res变量我存储文档的所有标签是对的吗?现在我需要做什么才能得到3个列表呢?

谢谢. .

HTMLAgilityPack and HTML Page

不建议使用所有的原始文本,因为你必须拆分它,这是自杀。

试试这个(取每个<td>与其特定的类,取InnerText而不是InnerHTML):

List<string> topicList = new List<string>; 
List<string> authorList = new List<string>; 
List<string> lastPostList = new List<string>; 
foreach (HtmlNode node in htmlDoc.DocumentNode.SelectNodes("//td[@class='topic starter']"))
            {
                 string topic;
                 topic = node.InnerText;
                 topicList.Add(topic);
            }
foreach (HtmlNode node in htmlDoc.DocumentNode.SelectNodes("//td[@class='author']"))
            {
                 string author;
                 author = node.InnerText;
                 authorList.Add(author);
            }
foreach (HtmlNode node in htmlDoc.DocumentNode.SelectNodes("//td[@class='lastpost']"))
                {
                     string lastpost;
                     lastpost = node.InnerText;
                     lastPostList.Add(lastpost); // This will take also the author that posted last post (e.g. Antony 24/10/09).
                }

如果您需要分隔文本:最后发布的作者和日期,您可以使用.split()属性字符串