Разбор HTML-строки

Есть ли способ разобрать HTML-строку в .Net-коде, как разбор DOM...

то есть. GetElementByTagName ( "а" ). 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)
        {
            ....                   
        }
    }
}

Ответ 1

Вы можете использовать отличный HTML Agility Pack.

Это гибкий HTML-синтаксический анализатор, который создает DOM для чтения/записи и поддерживает простой XPATH или XSLT (на самом деле не нужно понимать XPATH или XSLT, чтобы использовать его, не беспокойтесь...). Это библиотека .NET-кода, которая позволяет анализировать HTML файлы вне Интернета. Парсер очень толерантен с искаженным HTML-кодом "реального мира". Объектная модель очень похожа на то, что предлагает System.Xml, но для HTML-документов (или потоков).

Ответ 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);
 }

Ответ 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, чтобы сделать это точно, и я считаю, что это здорово. Это было действительно полезно для меня.