2017-05-18 1 views
0

J'essaie de faire un simple coup d'écran de Wikipedia en utilisant le pack HTML Agility. J'ai copié le format d'un lien approprié qui fonctionne dans mon navigateur, https://en.wikipedia.org/wiki/Nanticoke%2c_Pennsylvania < - Fonctionne dans le navigateur Cependant, lorsque j'utilise ce code, j'obtiens l'exception de caractères de chemins illégaux de la classe WebClient.WebClient Wikipédia caractères illicites du chemin même après l'encodage de l'URL

Adresse originale: https://en.wikipedia.org/wiki/Nanticoke,_Pennsylvania

Mise à jour - téléchargement du site à une variable de chaîne avant d'appeler html.Load() ne jette pas l'exception. Je reçois des caractères de chemin illégaux sur html.Load()

Exception données: 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

Pouvez-vous éditer votre question pour montrer a) l'URL réelle générée et b) l'exception réelle que vous obtenez? – stuartd

+0

Vous n'avez pas publié l'URL réelle après l'encodage. De plus, déplacez votre 'client.DownloadString' sur' html.Load' et attribuez-le à une variable chaîne de sorte que nous puissions déterminer s'il s'agit d'un problème avec l'URL, ou si la réponse de Wikipedia lève une exception dans HAP – ColinM

+0

une url pas html brut. Utilisez LoadHtml pour charger html à partir d'une chaîne. –

Répondre

0

j'utilisais la mauvaise méthode. Load va tenter de faire tomber le site Web, LoadHtml excepte le contenu déjà chargé.

html.LoadHtml(content);