2

WebClientを使用してWebページのhtmlコードを(文字列として)取得します。

ただし、このクラスが提供するDOM機能を使用できるように、これをHtmlDocumentオブジェクトに変換したいと思います。現在、私がそれを行う方法を知っている唯一の方法は、次のようにブラウザコントロールを使用することです。

            string pageHtml = client.DownloadString(url);

            browser.ScriptErrorsSuppressed = true;

            browser.DocumentText = pageHtml;

            do
            {
                Application.DoEvents();

            } while (browser.ReadyState != WebBrowserReadyState.Complete);

            return browser.Document;

それを行う別の方法はありますか?利用可能な他のブラウザコントロールがあることは知っていますが、もっと簡単な方法はありますか?

4

3 に答える 3

7

HtmlAgilityPack ...を使用できます。例:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var results = doc.DocumentNode
    .Descendants("div")
    .Select(n => n.InnerText);
于 2012-05-17T09:41:57.233 に答える
2

私はこれが古い投稿であることを知っていますが、私の担当者は私のようにここに来る他の人のためのものです

コード.NETを使用してそれを実行したい場合は、ここで実行する必要があります

public System.Windows.Forms.HtmlDocument GetHtmlDocument(string html)
        {
            WebBrowser browser = new WebBrowser();
            browser.ScriptErrorsSuppressed = true;
            browser.DocumentText = html;
            browser.Document.OpenNew(true);
            browser.Document.Write(html);
            browser.Refresh();
            return browser.Document;
        }
于 2015-10-30T19:30:11.550 に答える
0

私はそれが古いトピックであることを知っています、私の解決策:

public static class HtmlHelpr{

        public static HtmlDocument HtmlDocumentFromFile(this string PathToHtml){
            using(WebBrowser wb = new WebBrowser()){            
                string s = File.ReadAllText(PathToHtml);
                wb.ScriptErrorsSuppressed = true;
                wb.DocumentText = s;
                var hd = wb.Document;
                hd.Write(s);
                return  hd;
            }
        }
    }
于 2017-04-16T15:38:47.527 に答える