Как загрузить HTML-источник в С#

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

Ответ 1

Вы можете загружать файлы с помощью класса 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");
}

Ответ 2

в основном

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);

Ответ 3

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

var html = new System.Net.WebClient().DownloadString(siteUrl)

Ответ 4

Самый новый, самый последний, актуальный ответ
Этотпост действительно старый (ему было 7 лет, когда я на него ответил), поэтому никто из других ответов не использовал новый и рекомендуемый способ - класс HttpClient.


HttpClient считается новым API, и он должен заменить старые (WebClient и WebRequest)

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

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

Ответ 5

@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");
    //...
}

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