#c# #html #dotnet-httpclient #httpcontent
#c# #HTML #dotnet-httpclient #httpcontent
Вопрос:
Вот некоторый код для запроса html-кода из url.
var currentUrl = "https://www.google.com";
HttpClient client = new HttpClient();
System.Diagnostics.Process.Start(currentUrl); //here i open a browser with same URL,
var response = await client.GetAsync(currentUrl);
string sourse = null;
if (response != null amp;amp; response.StatusCode == HttpStatusCode.OK)
{
sourse =await response.Content.ReadAsStringAsync(); // here i get the html-code
}
ИТАК, вопросы: почему html-код, который я получаю из программы, и html-код с реальной страницы в браузере, которую я открывал несколько секунд назад, отличаются? Это не имеет смысла.
Кроме того, вот несколько доказательств. Первое изображение — количество символов в браузере-html-код
Я привел простейшее доказательство, чтобы упростить вопрос. Но если копнуть глубже, html-код берется из ниоткуда. Когда я разбираю определенную страницу, и на ней должно быть 39 товаров, программа возвращает html-код, в котором всего 6 товаров (которые, кстати, не входят в число 39 тех, что фактически есть на странице в браузере). Итак, я задал вопрос так просто. Действительно, минуту назад я создал новый проект с этим кодом, и он работает некорректно, как я писал выше. чтобы получить код, который возвращает программа, я могу посмотреть его в переменной sourse или оставить его в файле, а затем сравнить. Нравится:
FileStream fs = new FileStream("report.txt", FileMode.OpenOrCreate);
StreamWriter SW = new StreamWriter(fs);
SW.WriteLine(sourse);
Комментарии:
1. Что заставляет вас думать, что это недопустимо? Как вы можете определить? И вы учитывали, что ваш браузер может предоставлять намного больше HTTP-заголовков, когда он отправляет запрос GET в Google, чем ваш HttpClient?
2. HttpClient не является браузером. Браузер загрузит страницу, отобразит ее и запустит в ней скрипты, HttpClient этого делать не будет.
3. Хммм, хорошо. Но как я могу загрузить страницу, как в браузере, и получить правильный HTML-код?
4. @MisterCrabs Вы смотрите на элементы управления браузером, такие cefsharp.github.io или веб-браузер .Net Framework. Независимо от того, что вы выберете, вы должны проверить свою цель. Почему вы получаете HTML-код?