htmlunit 抓取网页(介绍两种使用Java进行Web的工具,即无头模式! )
优采云 发布时间: 2022-01-11 13:17htmlunit 抓取网页(介绍两种使用Java进行Web的工具,即无头模式!
)
在之前的 文章 中,我向您介绍了两个使用 Java 进行网页抓取的工具。第一个 文章 中的 HtmlUnit 和 文章 中的 PhantomJS 关于处理 Javascript-heavy 网站。
这一次,我们将介绍 Chrome 的一项新功能,即无头模式。有传言称谷歌使用特殊版本的 Chrome 来满足其抓取需求。我不知道这是否属实,但谷歌几个月前为 Chrome 59 引入了无头模式。
PhantomJS 是该领域的领导者,它已经(并且仍然)大量用于浏览器自动化和测试。在听说 Headless Chrome 之后,PhantomJS 的维护者说他辞去了维护者的职务,因为我引用了“Google Chrome 比 PhantomJS 更快、更稳定 [...]”
在浏览器自动化和处理 Java-heavy网站 方面,Chrome 无头似乎正在成为一种选择。
HtmlUnit、PhantomJS 和其他无头浏览器是非常有用的工具,问题是它们不如 Chrome 稳定,有时你会得到 Chrome 没有的 Javascript 错误。
先决条件
org.seleniumhq.selenium
selenium-java
3.8.1
如果你没有安装谷歌浏览器,你可以在这里下载
要安装 Chromedriver,您可以在 MacOS 上使用 brew:
brew install chromedriver
或使用以下链接下载。
版本比较多,建议大家使用最新版的Chrome和chromedriver。
让我们登录黑客新闻
在这一部分中,我们将登录 Hacker News 并在登录后进行截图。我们不需要 Chrome 无头来执行此任务,但本文的目的只是向您展示如何使用 Selenium 运行无头 Chrome。
我们要做的第一件事是创建一个 WebDriver 对象并设置 chromedriver 路径和一些参数:
的
option is needed on Windows systems, according to the [documentation](https://developers.google.com/web/updates/2017/04/headless-chrome)
Chromedriver should automatically find the Google Chrome executable path, if you have a special installation, or if you want to use a different version of Chrome, you can do it with :
```java
options.setBinary("/Path/to/specific/version/of/Google Chrome");
如果您想了解有关不同选项的更多信息,请参阅 Chromedriver 文档
下一步是对 Hacker News 登录表单执行 GET 请求,选择用户名和密码字段,用我们的凭据填写它们,然后单击登录按钮。然后我们必须检查凭据错误,如果登录,我们可以截屏。