HTMLAgility Packを使用してリンクを抽出する

c# html-agility-pack

質問

この最も簡単なコードを考えてみましょう。

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;

namespace WebScraper
{
    class Program
    {
        static void Main(string[] args)
        {
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml("http://www.google.com");

            foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
            {
            }
        }
    }
}

これは実際には何もしませんし、 このような他のさまざまなStackOverflowの質問からコピー/インスピレーションを受けています。これをコンパイルすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というランタイムエラーが発生します。 foreach行を強調表示します。

なぜなら、この謙虚で、無邪気で無駄なコードの断片に環境が苛立つようになった理由は分かりません。

HTMLAgilityPackはHTMLクラスをノードとして受け入れますか?

受け入れられた回答

WebからHTMLをロードする場合は、 HtmlWebオブジェクトを使用する必要があります。

HtmlWeb web = new HtmlWeb();
HtmlDocument doc =web.Load(url);

人気のある回答

LoadHtmlは実際のHTML文字列を引数として取ります。代わりに、 WebResponse.GetResponseStream()からストリームをロードすることができます。

WebRequest req = WebRequest.Create( "http://www.google.com" );
Stream s = req.GetResponse().GetResponseStream();
doc.Load(s);



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ