【问题标题】:using HtmlAgilityPack for parsing a web page information in C#使用 HtmlAgilityPack 在 C# 中解析网页信息
【发布时间】:2013-11-08 23:05:32
【问题描述】:

我正在尝试使用 HtmlAgilityPack 来解析网页信息。这是我的代码:

using System;
using HtmlAgilityPack;

namespace htmparsing
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            string url = "https://bugs.eclipse.org";
            HtmlWeb web = new HtmlWeb();
            HtmlDocument doc = web.Load(url);
            foreach(HtmlNode node in doc){
                //do something here with "node"
            }               
        }
    }
}

但是当我尝试访问doc.DocumentElement.SelectNodes 时,我在列表中看不到DocumentElement。我在引用中添加了 HtmlAgilityPack.dll,但我不知道是什么问题。

【问题讨论】:

  • doc1.DocumentElementdoc1.DocumentNode ? (顺便说一句,是doc 还是doc1?)
  • 我不知道,现在它显示了 DocumentNode,但在一些教程中我找到了 DocumentElement。所以看来 DocumentNode 是正确的
  • but in some tutorial I found DocumentElement. 例如?
  • 你能检查这个链接吗htmlagilitypack.codeplex.com/…
  • 能介绍一下htmlagilitypack的教程吗?我是初学者

标签: c# html html-agility-pack


【解决方案1】:

我有一篇文章演示了使用 ASP.NET 使用 HAP(HTML 敏捷包)抓取 DOM 元素。它只是让您逐步完成整个过程。你可以看看试试看。

Scraping HTML DOM elements using HtmlAgilityPack (HAP) in ASP.NET

关于你的过程,它对我来说很好。我已经尝试过这种方式,就像您对单个更改所做的那样。

string url = "https://www.google.com";
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//a")) 
{
    outputLabel.Text += node.InnerHtml;
}

按预期得到输出。问题是您从 HtmlDocument 对象中请求 DocumentElement,实际上应该是 DocumentNode。以下是 HTMLAgilityPack 开发人员对您所面临问题的回复。

HTMLDocument.DocumentElement not in object browser

【讨论】:

  • 你将如何遍历页面上的每个元素,而不仅仅是标签?
【解决方案2】:

您看到的行为是正确的。

看看你实际上在做什么:http://htmlagilitypack.codeplex.com/SourceControl/latest#Release/1_4_0/HtmlAgilityPack/HtmlNode.cs

您要求顶部元素选择与某些 xpath 匹配的节点。除非您的 xpath 表达式以 // 开头,否则您是在向它询问相对节点,它们是后代节点。一个文档元素不是它自己的后代,因为没有一个元素是它自己的后代。

【讨论】:

  • 如果您要投反对票,请发表评论。这个答案是正确的,投票具有误导性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2022-08-23
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
相关资源
最近更新 更多