【问题标题】:Parsing HTML String [duplicate]解析 HTML 字符串 [重复]
【发布时间】:2011-07-03 14:04:01
【问题描述】:

有没有办法像 DOM 解析一样在 .Net 代码中解析 HTML 字符串...

即GetElementByTagName("abc").GetElementByTagName("tag")

我有这个代码块...

private void LoadProfilePage()
{        
    string sURL;
    sURL = "http://www.abcd1234.com/abcd1234";

    WebRequest wrGETURL;
    wrGETURL = WebRequest.Create(sURL);

    //WebProxy myProxy = new WebProxy("myproxy",80);
    //myProxy.BypassProxyOnLocal = true;

    //wrGETURL.Proxy = WebProxy.GetDefaultProxy();

    Stream objStream;
    objStream = wrGETURL.GetResponse().GetResponseStream();

    if (objStream != null)
    {
        StreamReader objReader = new StreamReader(objStream);

        string sLine = objReader.ReadToEnd();

        if (String.IsNullOrEmpty(sLine) == false)
        {
            ....                   
        }
    }
}

【问题讨论】:

  • 如果它是有效的 XHTML 也许你可以在 System.Xml.XDocument 中加载它

标签: c# .net html parsing


【解决方案1】:

您可以使用优秀的HTML Agility Pack

这是一个敏捷的 HTML 解析器,它构建一个读/写 DOM 并支持普通的 XPATH 或 XSLT(实际上你不必了解 XPATH 或 XSLT 就可以使用它,不用担心......)。它是一个 .NET 代码库,允许您解析“网络之外”的 HTML 文件。解析器对“真实世界”格式错误的 HTML 非常宽容。对象模型与 System.Xml 的提议非常相似,但用于 HTML 文档(或流)。

【讨论】:

  • dangit oded - 我刚刚发布了同样的内容,只是我很慢,你是速度守护神! :) +1 来自我。
  • @Downvoter - 想发表评论吗?
【解决方案2】:

看看使用Html Agility Pack

使用示例:

 HtmlDocument doc = new HtmlDocument();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]")
 {
    HtmlAttribute att = link["href"];
    att.Value = FixLink(att);
 }

【讨论】:

  • xpath 字符串应该是 "//a[@href]" ?
【解决方案3】:

您可以使用HTML Agility Pack 和一点 XPath(它甚至可以为您下载文档):

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://www.abcd1234.com/abcd1234");
HtmlNodeCollection tags = doc.DocumentNode.SelectNodes("//abc//tag");

【讨论】:

【解决方案4】:

我使用HTML Agility Pack 来做这件事,我认为这很棒。这对我真的很有帮助。

【讨论】:

【解决方案5】:

也许这会有所帮助:What is the best way to parse html in C#?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 2012-08-29
    相关资源
    最近更新 更多