HTMLUNIT与无头Selenium

时间:2012-06-20 17:04:07

标签: selenium htmlunit headless

我正在尝试使用无头Selenium刮取包含图像的网站。 最初,该网站填充了50张图片。如果向下滚动,则会加载越来越多的图像。

Windows 7 x64
python 2.7
最近安装的硒

[1]非无头的 使用selenium导航到网站如下:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get(url)
browser.execute_script('window.scrollBy(0, 10000)')
browser.page_source

这是有效的(如果有人有更好的建议请告诉我) 我可以继续 scrollBy()直到我到达结尾然后拉出源页面。

[2]使用HTMLUNIT无头

from selenium import webdriver
driver = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)
driver.get(url)

我无法在这个无头环境中使用 scrollBy() 关于如何抓取这种页面的任何建议? 感谢

3 个答案:

答案 0 :(得分:0)

一种选择是研究JavaScript以了解它如何计算接下来要加载的内容。然后在您的抓取客户端中实现该逻辑。完成后,您可以使用更快的抓取工具,如Perl的WWW :: Mechanize。

答案 1 :(得分:0)

使用HtmlUnit驱动程序时需要显式启用JavaScript:

driver.setJavascriptEnabled(true);

根据[http://code.google.com/p/selenium/wiki/HtmlUnitDriver](the docs),它应默认模拟IE的JavaScript处理。

答案 2 :(得分:0)

当我尝试使用相同的方法时,我收到了连接java以模拟javascript时selenium崩溃的错误消息。

我将脚本写入execute_script方法,然后代码运行良好。

我猜selenium和java服务器部分之间的通信配置不正确。

可以快速启用javascript HTMLUNITDRIVERWITHJS;)