2017-05-18 8 views
0

私は、HTML Agilityパックを使用してWikipediaから簡単な画面スクレイプを実行しようとしています。 https://en.wikipedia.org/wiki/Nanticoke%2c_Pennsylvania < - ブラウザで動作します このコードを使用すると、WebClientクラスからの不正なパス文字列例外が発生します。WebClient Wikipedia URLのエンコード後でも違法パス文字

オリジナル住所:https://en.wikipedia.org/wiki/Nanticoke,_Pennsylvania

アップデート - 例外をスローしませんhtml.Load()を呼び出す前に、文字列変数へのウェブサイトをダウンロードします。私は(html.Load上の違法なパス文字を取得)

例外データ:enter image description here

var client = new WebClient(); 
var address = $"https://en.wikipedia.org/wiki/{HttpUtility.UrlEncode($"{name},_{state}")}"; 

HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument(); 
html.Load(client.DownloadString(address)); //Exception thrown here 
+0

質問を編集してa)実際に生成されたURLとb)実際に発生した例外を表示できますか? – stuartd

+0

エンコーディング後に実際のURLを投稿していません。また、 'html.Load'から' client.DownloadString'を動かし、それを文字列変数に代入することで、URLに問題があるかどうか、あるいはWikipediaの応答がHAPで例外を投げるかどうかを実際に判断することができます – ColinM

+0

Loadテイク生のHTMLではないURL。文字列からhtmlを読み込むには、LoadHtmlを使用します。 –

答えて

0

私は間違った方法を使用していました。 LoadはWebサイトをプルダウンしようとしますが、LoadHtmlはすでにロードされているコンテンツを除きます。

html.LoadHtml(content); 
関連する問題