Очистка веб-сайта с помощью C # с использованием HTML-запроса, не дающего табличных данных

#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-файл, но без нужных мне данных, которые заключены в элементе.

В браузере:

HTML от Dev Tools

Отображение

Во время выполнения:

введите описание изображения здесь

Комментарии:

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(); это будет работать.