web-dev-qa-db-ja.com

HTML文字列の解析

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)
        {
            ....                   
        }
    }
}
10
S M Kamran

優れた HTML Agility Pack を使用できます。

これは、読み取り/書き込みDOMを構築し、プレーンXPATHまたはXSLTをサポートするアジャイルHTMLパーサーです(実際には、XPATHまたはXSLTを理解して使用する必要はありません。心配しないでください...)。これは、「Web外」のHTMLファイルを解析できるようにする.NETコードライブラリです。パーサーは、「実世界」の不正な形式のHTMLに対して非常に耐性があります。オブジェクトモデルは、System.Xmlを提案するものと非常に似ていますが、HTMLドキュメント(またはストリーム)用です。

10
Oded

Html Agility Pack の使用を見てください

その使用例:

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

HTML Agility Pack と小さなXPathを使用できます(ドキュメントをダウンロードすることもできます)。

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

HTML Agility Pack を使用してこれを正確に実行しましたが、これはすばらしいことだと思います。それは私にとって本当に役に立ちました。

2
phillip

多分これは役立つかもしれません: C#でhtmlを解析するための最良の方法は何ですか?

0
alexl