WaitUntil not waiting / Get HTML on WaitForSelectorAsync



有两个问题,我将不胜感激。 过去在节点中使用过木偶师,但由于某种原因,在尖锐版本上遇到了问题。

基本上,我正在抓取一个将WaitThIn设置为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()

我的第二个问题无关,但可能更容易解决。 我正在考虑的一种途径是使用该页面。WaitForSelectorAsync() 方法。 这似乎等到我正在寻找的内容加载完毕,但我无法弄清楚如何在从 ElementHandle 返回中获取页面的整个 html。

希望在这里得到一些帮助,尝试了几条路线,但无法找出导致节点和 C# 代码之间差异的原因。

解决了我的问题。 问题是我如何获取页面的html。

我正在使用...

await reponse.TextAsync()

显然,这只得到了我最初的反应。 当我更改我的html时,转到以下代码行,一切都按预期工作。

await page.GetContentAsync()

最新更新