Имея две проблемы, я был бы признателен за некоторые советы. В прошлом использовали кукловода в узле, но по какой-то причине столкнулись с проблемой на острой версии.
По сути, я сканирую веб-страницу с параметром WaitUntil, установленным в WaitUntilNavigation.Networkidle0, самый длинный период ожидания. В моем коде узла это работает и загружает мой веб-сайт правильно, но в версии C # я получаю страницу без угловой загрузки. Насколько я могу судить, он не ждет и не возвращает исходное состояние загрузки. Ниже мой код.
if (BROWSER == null)
{
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
BROWSER = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new string[] { "--no-sandbox", "--disable-accelerated-2d-canvas", "--disable-gpu", "--proxy-server='direct://'", "--proxy-bypass-list=*" }
});
}
if (page == null)
{
page = await BROWSER.NewPageAsync();
await page.SetUserAgentAsync("PScraper-SiteCrawler");
await page.SetViewportAsync(new ViewPortOptions() { Width = 1024, Height = 842 });
var response = await page.GoToAsync(url, new NavigationOptions() { Referer = "PScraper-SiteCrawler", Timeout = timeoutMilliseconds, WaitUntil = new[] { WaitUntilNavigation.Networkidle0 } });
}
Время ожидания установлено на 30 секунд или 30 000 миллисекунд. Затем я получаю HTML страницы, делая
await reponse.TextAsync()
Мой второй вопрос не имеет отношения, но, вероятно, его проще решить. Один из вариантов, который я рассматривал, - это использование метода page.WaitForSelectorAsync (). Похоже, это ждет, пока загрузится содержимое, которое я ищу, но я не смог выяснить, как получить весь html страницы после того, как это сделано из возврата ElementHandle.
Буду признателен за помощь, попробовал пару маршрутов и не смог выяснить, в чем причина различий между узлом и кодом C #.