【问题标题】:Webcrawler, feedback?网络爬虫,反馈?
【发布时间】:2010-05-29 18:03:03
【问题描述】:

大家好,我时不时需要从网站上自动执行数据收集任务。有时我需要一个目录中的一堆 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

【问题讨论】:

    标签: java optimization web-crawler feedback


    【解决方案1】:

    您的爬虫似乎不尊重robots.txt,并使用伪造的User-Agent 字符串来炫耀,就好像它是一个网络浏览器一样。这可能会导致未来的法律纠纷。请记住这一点。

    【讨论】:

    • “未来”是这里的关键词。不服从 robots.txt 文件在法庭上从未被认定为非法。很少有先例,但 Wayback Machine 参与了 2007 年可能感​​兴趣的一项行动:theregister.co.uk/2007/07/26/wayback_firm_suit
    • 尽管如此,大多数网站仍会将此类网络爬虫标记为可疑活动,并可能阻止/禁止其访问该网站。我强烈建议尊重 robots.txt 并使用合理的用户代理字符串,例如 JCrawler/1.0 http://jcrawler.org拥有 一个站点,您可以在其中公开有关爬虫的所有详细信息以及用户/站点管理员可能对该爬虫的期望.
    • 在@BalusC 的评论中,拥有一个专门的代理意味着您不会伪装成 IE6(所有事物),并说服可怜的不知情的管理员他们需要继续支持它。
    • 在网络上隐藏你的身份比使用假身份证进入你不应该进入的地方更糟糕。如果您因为用户代理而被阻止,则意味着 您不是被通缉的访问者,把它收起来并移到别处。
    • 正式记录,我感谢迄今为止的所有反馈。有人看过风格吗?有什么我可以/应该改进的地方吗?
    【解决方案2】:

    我在我的公司编写了一个自定义网络爬虫,我按照你提到的类似步骤进行操作,我发现它们很完美。我想说的唯一附加组件是它应该有一个轮询频率,在某些情况下可以抓取一段时间。

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

    【讨论】:

    • 感谢您的回答。什么是轮询?蜘蛛本身并没有缩进连续运行,尽管我想我可以通过一些更改来做到这一点;在这种情况下,我绝对同意观察者设计模式。事实上,我个人可能会在 doAction 中实现更新的东西。
    • 轮询只不过是一个抓取的时间段。假设是 5 分钟,这意味着每 5 分钟后它会抓取到特定的 URL。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 2012-08-01
      • 2015-05-12
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多