C# 解析HTML字符串

C# 解析HTML字符串,c#,.net,html,parsing,C#,.net,Html,Parsing,有没有一种方法可以在.Net代码中解析HTML字符串,比如DOM解析 i、 e.GetElementByTagName(“abc”).GetElementByTagName(“标记”) 我有这个代码块 private void LoadProfilePage() { string sURL; sURL = "http://www.abcd1234.com/abcd1234"; WebRequest wrGETURL; wrGETURL = Web

有没有一种方法可以在.Net代码中解析HTML字符串,比如DOM解析

i、 e.GetElementByTagName(“abc”).GetElementByTagName(“标记”)

我有这个代码块

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)
        {
            ....                   
        }
    }
}
您可以使用优秀的

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

看看如何使用

其使用示例:

 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(它甚至可以为您下载文档):


也许这能帮上忙:

我已经用这个方法做了这件事,我觉得它很棒。它对我真的很有帮助。

如果它是有效的XHTML,也许你可以将它加载到
System.Xml.XDocument
dangit-oded-我刚刚发布了同样的东西,只是我很慢,你的速度很快+1从我这里。@Downvoter-care to comment?xpath字符串应为“//a[@href]”?该链接已过时。他们移动到那个链接已经过时了。他们搬到了
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://www.abcd1234.com/abcd1234");
HtmlNodeCollection tags = doc.DocumentNode.SelectNodes("//abc//tag");