#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 в сети показывает пустую страницу с загрузкой на нее.