#c# #html #web-scraping #httpclient #httpresponse
#c# #HTML #очистка веб-страниц #httpclient #httpresponse
Вопрос:
Я создаю простой скребок для веб-сайта для извлечения названий сторон по делам верховного суда (это общедоступная информация) на C #, как в этом примере ссылки: https://www.supremecourt.gov/search.aspx?filename=/docket/docketfiles/html/public/19-8334.html
C # Код:
private static async void GetHtmlAsync(String docket)
{
var url = "https://www.supremecourt.gov/search.aspx?filename=/docket/docketfiles/html/public/19-8334.html";
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36 OPR/71.0.3770.234");
var html = await httpClient.GetStringAsync(url);
var htmlDocument = new HtmlAgilityPack.HtmlDocument();
htmlDocument.LoadHtml(html);
Console.WriteLine();
}
Проблема в том, что всякий раз, когда я запускаю это, он успешно возвращает весь HTML-файл, но без нужных мне данных, которые заключены в элементе.
В браузере:
Во время выполнения:
Комментарии:
1. Он возвращает поиск данных для docketwrappers в строке html.
Ответ №1:
Я не знаю почему, но вы должны получить правильный ответ.
Попробуйте следовать, вы можете получить ответ.
var html = httpClient.GetAsync(url).GetAwaiter().GetResult();
Комментарии:
1. @Ess Task.Result заблокирует вызывающий поток, пожалуйста, используйте Task. WaitAll(GetHtmlAsync) в основном методе, и пусть GetHtmlAsync возвращает Task вместо void .
2. Можно использовать var html = HttpClient. GetAsync (url). GetAwaiter().GetResult(); это будет работать.