#c# #web-scraping #httpclient
#c# #очистка веб-страниц #httpclient
Вопрос:
Я пытаюсь прочитать некоторые веб-страницы с помощью HttpClient (C #), и на некоторых страницах я получаю код состояния ответа, который не указывает на успех: 404 (такого файла нет)? Другие работают просто отлично.
Вот пример кода:
static readonly HttpClient client = new HttpClient();
private static async void GetHtmlAsync()
{
var url = "https://www.yourwebpage.com";
try
{
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
catch (HttpRequestException e)
{
Console.WriteLine("nException Caught!");
Console.WriteLine("Message :{0} ", e.Message);
}
}
также попробуйте добавить заголовок к клиенту, но безуспешно:
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0");
client.DefaultRequestHeaders.Add("Accept", text/html,application/xhtml xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
client.DefaultRequestHeaders.Add("Accept-Language", "en-US,en;q=0.5");
client.DefaultRequestHeaders.Add("Connection", "keep-alive");
client.DefaultRequestHeaders.Add("Host", "www.betexplorer.com");
client.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1");
Решение:
Я решаю эту проблему с помощью библиотеки RestSharp.
Комментарии:
1. опубликуйте свой код.
2. Было бы полезно просмотреть ваш код и hqve, а также детали на страницах, которые вы запрашиваете.
3. Обычно это означает, что используемый вами URL-адрес неверен. Не намного больше, чем это. Что вы хотите, чтобы мы сказали? Мы понятия не имеем, какие URL-адреса вы пробовали или как вы использовали их в коде, поэтому мы не можем указать на какие-либо ошибки
4. Кстати, написание заявления, а затем постановка вопросительного знака в конце (как вы сделали здесь) волшебным образом не превращает его в реальный вопрос. Все, что вы сделали, это рассказали нам о своих проблемах. Вы ничего не спросили и не предоставили никакой информации, которую мы могли бы использовать, чтобы помочь вам.
Ответ №1:
Вот решение. Я использовал библиотеку RestSharp, и она работает отлично.
private static async void GetHtmlAsync()
{
var url = "https://www.yourwebpage.com";
try
{
var restClient = new RestClient(url);
var request = new RestRequest("", Method.GET);
restClient.ExecuteAsync(request, response =>
{
Console.WriteLine(response.Content);
});
}
catch (HttpRequestException e)
{
Console.WriteLine("nException Caught!");
Console.WriteLine("Message :{0} ", e.Message);
}
}
Ответ №2:
Вы должны притвориться браузером.
Например, добавьте следующий заголовок
client.DefaultRequestHeaders.Add("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0");
Комментарии:
1. Нет, это не имеет никакого значения.