Имитация веб-браузера C#

#c# #.net #selenium #.net-core #headless-browser

#c# #.net #селен #.net-ядро #безголовый-браузер

Вопрос:

Я пытаюсь извлечь данные HtmlAgilityPack с различных веб-сайтов, загрузив их HTML-код client.DownloadStringAsync() . До сих пор это работало безупречно, но недавно я столкнулся с проблемой с одним из веб-сайтов, которые я пытался загрузить таким образом. Вместо фактического содержимого сайта, которое можно увидеть в браузере, там просто написано «Загрузка …». После проверки сети в Chrome кажется, что запрос GET просто получает необработанный HTML, который на самом деле не содержит никаких данных, которые мне нужны, и вместо этого он в основном инициализируетсяJavascript. Я нашел Selenium WebDriver, который должен делать то, что я хочу, однако я думаю, что это приведет к конфликту, если я попытаюсь запустить все это на Raspberry Pi (для чего я и разрабатываю этот проект). Если есть какие-либо альтернативы, дайте мне знать или если это работает и в системах на базе unix. Вот Http-геттер, который я использовал до сих пор:

 private async Task<string> HttpGet(string URL) {
  using var client = new HttpClient();
  using var request = new HttpRequestMessage {RequestUri = new Uri(URL), Method = HttpMethod.Get};
  using var response = await client.SendAsync(request, HttpCompletionOption.ResponseContentRead);
  if (response.StatusCode == HttpStatusCode.NotFound) return "404";
  return await response.Content.ReadAsStringAsync();
}
 

После попытки использовать вышеупомянутый пакет NuGet с Chrome мне удалось получить кучу разных ошибок, которые были мне незнакомы. Вот мой код:

 private string SeleniumGet(string URL) {
  ChromeOptions options = new ChromeOptions();
  options.AddArgument("headless");
  options.BinaryLocation = Directory.GetCurrentDirectory()   @"chromedriver.exe"; //Probably not gonna work on an RPi
  using ChromeDriver driver = new ChromeDriver(options);
  driver.Navigate().GoToUrl(URL);
  return driver.PageSource; //Unsure if this is source code, doesn't really matter for now - program crashes when initiating chrome driver
}
 

В настоящее время я застрял на этом высказывании Invalid --log-level value. , но у меня были и другие, такие как unknown error: DevToolsActivePort file doesn't exist. , однако, я не могу воспроизвести это. В настоящее время появляется только ошибка недопустимого уровня журнала, которая выходит из строя при построении ChromeDriver . Заранее благодарю за помощь. Если сайт, к которому я пытаюсь получить доступ, имеет значение, то это он. Просмотр запроса GET в сети показывает пустую страницу с загрузкой на нее.