Как я могу скачать исходный код HTML в C # - PullRequest
99 голосов
/ 01 марта 2009

Как я могу получить исходный HTML-код по веб-адресу в c #?

Ответы [ 5 ]

174 голосов
/ 01 марта 2009

Вы можете загружать файлы с помощью класса WebClient :

using System.Net;

using (WebClient client = new WebClient ()) // WebClient class inherits IDisposable
{
    client.DownloadFile("http://yoursite.com/page.html", @"C:\localfile.html");

    // Or you can get the file content without saving it
    string htmlCode = client.DownloadString("http://yoursite.com/page.html");
}
38 голосов
/ 01 марта 2009

в основном:

using System.Net;
using System.Net.Http;  // in LINQPad, also add a reference to System.Net.Http.dll

WebRequest req = HttpWebRequest.Create("http://google.com");
req.Method = "GET";

string source;
using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
{
    source = reader.ReadToEnd();
}

Console.WriteLine(source);
15 голосов
/ 15 января 2013

Вы можете получить его с помощью:

var html = new System.Net.WebClient().DownloadString(siteUrl)
12 голосов
/ 21 января 2017

Этот пост действительно старый (мне 7 лет, когда я отвечаю на него), поэтому ни одно из других решений не использовало новый и рекомендуемый способ, а именно HttpClient класс. HttpClient считается новым API и должен заменять старые (WebClient и WebRequest)

string url = "page url";

using (HttpClient client = new HttpClient())
{
    using (HttpResponseMessage response = client.GetAsync(url).Result)
    {
        using (HttpContent content = response.Content)
        {
            string result = content.ReadAsStringAsync().Result;
        }
    }
}

Для получения дополнительной информации о том, как использовать класс HttpClient (особенно в асинхронных случаях), вы можете обратиться к этому вопросу

10 голосов
/ 20 января 2011

@ cms - более поздний способ, предложенный на веб-сайте MS, но мне пришлось решить трудную проблему, так как оба метода размещены здесь, теперь я выложу решение для всех!

Проблема: если вы используете URL-адрес, подобный следующему: www.somesite.it/?p=1500 в некоторых случаях вы получаете внутреннюю ошибку сервера (500), хотя в веб-браузере это www.somesite.it/?p=1500 отлично работает.

Решение: Вы должны выйти из параметров, рабочий код:

using System.Net;
//...
using (WebClient client = new WebClient ()) 
{
    client.QueryString.Add("p", "1500"); //add parameters
    string htmlCode = client.DownloadString("www.somesite.it");
    //...
}

здесь официальная документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...