好吧,我已经得到的东西用硒包(通过的NuGet可)工作。代码如下所示:
private HtmlDocument FetchPageWithSelenium(string url)
{
IWebDriver driver = new FirefoxDriver();
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
driver.Navigate().GoToUrl(url);
// Scroll to the bottom of the page and pause for more products to load.
// Do it four times as there may be 4x20 products to retrieve.
js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight);");
Thread.Sleep(2000);
js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight);");
Thread.Sleep(2000);
js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight);");
Thread.Sleep(2000);
js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight);");
HtmlDocument webPage = new HtmlDocument();
webPage.LoadHtml(driver.PageSource.ToString());
driver.Quit();
return webPage;
}
这将返回HtmlAgilityPack的HTMLDocument准备作进一步的分析最早被迫页面完全加载通过反复滚动至底部。两个未解决的问题:
- 代码启动Firefox,然后在完成时再次停止。这有点笨拙,我宁愿所有这些发生在无形中。建议您可以通过使用PhantomJS驱动程序而不是Firefox驱动程序来避免此问题。这没有帮助,因为它只是弹出一个Windows控制台窗口。
- 由于加载浏览器所需的时间并在脚本加载补充内容时暂停,所以速度有点慢。尽管如此,我或许可以忍受它。
我会尝试重写@swestner代码以使其在WPF应用程序中运行,并查看哪些是整数解决方案。
谢谢@swestner - 看起来很有希望。不幸的是,我正在做一个WPF应用程序,所以System.Windows.Forms不会立即提供给我,但我怀疑有一个解决办法,我会研究。与此同时,我用我刚刚发现的Selenium软件包敲击类似的东西。我会发布下面的结果。 – ifinlay