使用Java进行Web抓取

Non*_*ype 72 java frameworks web-scraping

我无法找到任何好的网络抓取基于Java的API.我需要抓取的网站也没有提供任何API; 我想使用一些网页遍历所有网页,pageID并在其DOM树中提取HTML标题/其他内容.

除了网络抓取之外还有其他方法吗?

Waj*_*sam 94

jsoup

提取标题并不困难,你有很多选择,在Stack Overflow上搜索" Java HTML解析器 ".其中一个是Jsoup.

如果您知道页面结构,可以使用DOM导航页面,请参阅 http://jsoup.org/cookbook/extracting-data/dom-navigation

这是一个很好的图书馆,我在上一个项目中使用过它.

  • 谢谢,这是一个很好的库,没有依赖,所以它非常轻量级.此外,它是无头的,所以它不需要浏览器(我有**Selenium**打开Chrome的问题,我根本不能使用**HtmlUnit**).**Selenium**必须更加真实,但是这个库在大多数抓取案例中都可以达到目的,而且设置起来非常简单:添加依赖项,你就可以了. (2认同)

KJW*_*KJW 21

您最好的选择是使用Selenium Web Driver

  1. 为编码器提供视觉反馈(请参阅您的抓取操作,查看停止位置)
  2. 准确和一致,因为它直接控制您使用的浏览器.
  3. 慢.没有像HtmlUnit这样的网页,但有时你不想打得太快.

    Htmlunit很快,但在处理Javascript和AJAX方面很糟糕.


小智 13

HTMLUnit可用于进行Web抓取,它支持调用页面,填写和提交表单.我在我的项目中使用了这个.它是用于网络抓取的优秀java库. 在这里阅读更多


小智 5

Java 的 mechanize 非常适合这种情况,正如 Wadjy Essam 提到的,它使用 JSoup 来实现 HMLT。mechanize 是一个阶段式 HTTP/HTML 客户端,支持导航、表单提交和页面抓取。

http://gistlabs.com/software/mechanize-for-java/(以及此处的 GitHub https://github.com/GistLabs/mechanize


Sla*_*vus 5

还有 Jaunt Java Web 抓取和 JSON 查询 - http://jaunt-api.com


小智 5

您可能会研究jwht-scraper

这是一个完整的抓取框架,具有开发人员期望从网络抓取工具中获得的所有功能:

它与 (jwht-htmltopojo)[https://github.com/whimtrip/jwht-htmltopojo) lib 配合使用,该库本身使用其他几个人提到的 Jsoup。

它们将帮助您构建出色的抓取工具,将 HTML 直接映射到 POJO,并在几分钟内绕过任何经典的抓取问题!

希望这可以帮助这里的一些人!

免责声明,我是它的开发者,请随时让我知道您的言论!