2

嘿伙计们,每隔一段时间我就需要从网站上自动执行数据收集任务。有时我需要一个目录中的一堆 URL,有时我需要一个 XML 站点地图(是的,我知道有很多软件和在线服务)。

无论如何,作为我之前问题的后续,我编写了一个可以访问网站的小型网络爬虫。

  • 基本爬虫类,可轻松快速地与一个网站进行交互。

  • 覆盖“doAction(String URL, String content)”以进一步处理内容(例如存储、解析)。

  • 概念允许爬虫的多线程。所有类实例共享已处理和排队的链接列表。

  • 可以建立 JDBC 连接来将链接存储在数据库中,而不是跟踪对象内的已处理链接和排队链接。

  • 但是,目前一次仅限于一个网站,可以通过添加 externalLinks 堆栈并酌情添加到其中来扩展。

  • JCrawler 旨在用于快速生成 XML 站点地图或解析网站以获取所需信息。它很轻。

如果有上述限制,这是编写爬虫的好/体面的方式吗?任何输入都会有很大帮助:)

http://pastebin.com/VtgC4qVE - Main.java
http://pastebin.com/gF4sLHEW - JCrawler.java
http://pastebin.com/VJ1grArt - HTMLUtils.java

4

3 回答 3

5

您的爬虫似乎不以任何方式尊重robots.txt,并使用假User-Agent字符串来炫耀,就好像它是一个网络浏览器一样。这可能会导致未来的法律纠纷。考虑到这一点。

于 2010-05-29T23:03:07.453 回答
2

我在我的公司写了一个自定义的网络爬虫,我按照你提到的类似步骤,我发现它们很完美。我想说的唯一附加组件是它应该有一个轮询频率在一段时间后爬行.

所以它应该遵循“观察者”设计模式,这样如果在一段时间后在给定的 url 上发现任何新的更新,那么它将更新或写入文件。

于 2010-05-29T19:38:53.267 回答
0

我会推荐开源 JSpider 作为你的爬虫项目的起点,它涵盖了网络爬虫的所有主要问题,包括 robots.txt,并且有一个插件方案,你可以使用它来将自己的任务应用到每个页面它访问。

这是对 JSpider 的简短且略微过时的评论。围绕这一页的页面回顾了其他几个 Java 爬虫应用程序。

http://www.mksearch.mkdoc.org/research/spiders/j-spider/

于 2010-05-30T08:00:11.100 回答