37

只是想知道是否有人知道利用 Scala 简洁语法的网络抓取库。到目前为止,我已经找到了 Chafe,但这似乎没有得到很好的记录和维护。我想知道是否有人已经用 Scala 进行了抓取并有建议。(我正在尝试集成到现有的 Scala 框架中,而不是使用用 Python 编写的爬虫。)

4

3 回答 3

12

首先,JVM 中有大量的 HTML 抓取库,您需要做的就是对其中一个进行 pimp(pimp my library pattern)

我用过的四个是:

  • HtmlUnit - 将模拟浏览器甚至运行 Javascript
  • Jericho - 如果您想编辑抓取的 HTML,则保留格式和理想的
  • NekoHTML
  • JSoup -不适用于 Scala可能工作

我使用过 Selenium,但从未用于刮擦。Scala 有一个围绕 selenium 的包装器

我建议将现有的 Java 库放在一些半生不熟的 Scala 库上。

于 2013-02-07T20:04:50.550 回答
8

我没有针对 Scala 的建议,但对于 JVM,我在以下方面取得了很好的成功:

  • JSoup您可以使用 CSS 选择器“抓取”文档。真的很高兴与之合作。
  • 使用Tagsoup将您的输入 HTML 转换为 XML,然后使用 XML 处理器“抓取”。

Tagsoup 路线实际上与 Scala 配合得很好,因为 Scala 的内置 XML“dsl”非常简洁(如果您可以原谅它的性能问题和偶尔的 API 怪异)。此外,Tagsoup 将处理您提供给它的几乎所有垃圾文档。它还具有一些细节,例如对许多 HTML 实体的内置理解,其他 SAXParsers 会因为未声明而窒息。

tl;dr - 如果可能,JSoup + CSS 选择器,否则为 Tagsoup + scala XML。如果慢没问题,先tagsoup,然后jsoup结果。

于 2013-02-07T19:56:53.873 回答
2

我推荐鹅:https ://github.com/jiminoc/goose

它不像您可能需要的那样通用,但如果您从热门网站抓取文章内容,它可能开箱即用。如果您想扩展他们的代码以覆盖其他站点,它还为您提供了一个工作框架。

于 2013-02-07T19:39:09.700 回答