1

を使用したときと同じように、WebRequest クラスを使用してプレーン テキストを取得したいと考えていますwebbrowser1.Document.Body.InnerText。次のコードを試しました

public string request_Resource()
{
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl);
   Stream stream = request.GetResponse().GetResponseStream();
   StreamReader sr = new StreamReader(stream);
   WebBrowser wb = new WebBrowser();
   wb.DocumentText = sr.ReadToEnd();
   return wb.Document.Body.InnerText;
}

私が実行すると、これは get aNullReferenceExceptionです。

プレーンテキストを取得するより良い方法はありますか。

注: Web ブラウザ コントロールを直接使用して Web ページをロードすることはできません。これは、ページがロードされるたびに複数回発生するすべてのイベントを処理したくないためです。

更新: 提案に応じて、WebRequest の代わりに WebClient クラスを使用するようにコードを変更しました。私のコードは次のようになります。

public string request_Resource()
{
   WebClient wc = new WebClient();
   wc.Proxy = null;
   //The user agent header is added to avoid any possible errors
   wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729; .NET4.0C)");
   return wc.DownloadString(myurl);
}

HTML ユーティリティ パックの使用を検討しています。

4

3 に答える 3

3

IE なしで HTML を解析できるHTML Agility Packを探しています。
プロパティがありInnerTextます。


質問に答えるには、ブラウザがテキストを解析するのを待つ必要があります。


ちなみに、のWebClient代わりにクラスを使用する必要がありWebRequestます。

于 2010-11-25T18:38:45.113 に答える
1

ウェブクライアントを使用:

public string request_Resource()
{
    WebClient wc = new WebClient();
    byte[] data = wc.DownloadData(myuri);
    return Encoding.UTF8.GetString(data);
}

これにより、Web サイトのコンテンツが表示されます。次に、HtmlAgilityPack を使用して結果を解析できます。

于 2010-11-25T18:55:03.050 に答える
-2

プレーンなHTMLテキストだけが必要な場合は、すでにそのコードを記述しています。

public string request_Resource()
{
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl);
   Stream stream = request.GetResponse().GetResponseStream();
   StreamReader sr = new StreamReader(stream);
   return sr.ReadToEnd();
}
于 2010-11-25T19:12:58.017 に答える