Utiliser WebClient pour charger du HTML

c# html-agility-pack webclient

Question

J'essaie de télécharger une page Web:

string remoteUri = "http://whois.domaintools.com/94.100.179.159";
WebClient myWebClient = new WebClient();
byte[] myDataBuffer = myWebClient.DownloadData(remoteUri);
string download = Encoding.ASCII.GetString(myDataBuffer);
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(download);
doc.Save("file1.htm");

Avoir une erreur

L'exception web n'a pas été gérée: (403) interdit.

Existe-t-il d'autres moyens de télécharger la page? J'ai essayé la classe HtmlDocument, mais comme je peux le voir, elle a besoin d'une page Web chargée dans le navigateur.

string remoteUri = "http://whois.domaintools.com/94.100.179.159";
WebClient myWebClient = new WebClient();
byte[] myDataBuffer = myWebClient.DownloadData(remoteUri);
string download = Encoding.ASCII.GetString(myDataBuffer);
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(download);
doc.Save("file1.htm");

Réponse acceptée

using (var myWebClient = new WebClient())
{
    myWebClient.Headers["User-Agent"] = "MOZILLA/5.0 (WINDOWS NT 6.1; WOW64) APPLEWEBKIT/537.1 (KHTML, LIKE GECKO) CHROME/21.0.1180.75 SAFARI/537.1";

    string page = myWebClient.DownloadString("http://whois.domaintools.com/94.100.179.159");

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(page);
}

Réponse populaire

Le site renvoie simplement une erreur lorsqu'il ne trouve aucun agent d'utilisateur dans la demande, voici le code de travail.

string remoteUri = "http://whois.domaintools.com/94.100.179.159";
HtmlDocument doc = new HtmlDocument();
using (WebClient myWebClient = new WebClient())
{
  myWebClient.Headers.Add(HttpRequestHeader.UserAgent, "some browser user agent");
  doc.Load(myWebClient.OpenRead(remoteUri));
}
doc.Save("file1.htm");

Ou si vous voulez utiliser HtmlWeb

string remoteUri = "http://whois.domaintools.com/94.100.179.159";
HtmlDocument doc = new HtmlDocument();
using (WebClient myWebClient = new WebClient())
{
  myWebClient.Headers.Add(HttpRequestHeader.UserAgent, "some browser user agent");
  doc.Load(myWebClient.OpenRead(remoteUri));
}
doc.Save("file1.htm");



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi