web-dev-qa-db-fra.com

Comment puis-je obtenir le contenu d'une page Web et l'enregistrer dans la variable chaîne

Comment puis-je obtenir le contenu de la page Web en utilisant ASP.NET? J'ai besoin d'écrire un programme pour obtenir le code HTML d'une page Web et le stocker dans une variable chaîne.

70
kamiar3001

Vous pouvez utiliser le WebClient

WebClient client = new WebClient();
string downloadString = client.DownloadString("http://www.gooogle.com");
109
dhinesh

J'ai déjà rencontré des problèmes avec Webclient.Downloadstring. Si vous le faites, vous pouvez essayer ceci:

WebRequest request = WebRequest.Create("http://www.google.com");
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;
using (StreamReader sr = new StreamReader(data))
{
    html = sr.ReadToEnd();
}
70
Scott

Je recommande de ne pas utiliser WebClient.DownloadString. En effet, (au moins dans .NET 3.5) DownloadString n'est pas assez intelligent pour utiliser/supprimer la nomenclature, si elle est présente. Cela peut entraîner la nomenclature () n'apparaissant pas correctement dans la chaîne lorsque des données UTF-8 sont renvoyées (au moins sans jeu de caractères) - ick!

Au lieu de cela, cette légère variation fonctionnera correctement avec les nomenclatures:

string ReadTextFromUrl(string url) {
    // WebClient is still convenient
    // Assume UTF8, but detect BOM - could also honor response charset I suppose
    using (var client = new WebClient())
    using (var stream = client.OpenRead(url))
    using (var textReader = new StreamReader(stream, Encoding.UTF8, true)) {
        return textReader.ReadToEnd();
    }
}
23
user2246674
Webclient client = new Webclient();
string content = client.DownloadString(url);

Passez l'URL de la page à qui vous voulez accéder. Vous pouvez analyser le résultat en utilisant htmlagilitypack.

9
Steven Spielberg