【问题标题】:How to crawl entire Wikipedia?如何爬取整个维基百科?
【发布时间】:2010-02-22 20:01:26
【问题描述】:

我已经尝试过 WebSphinx 应用程序。

我意识到如果我将 wikipedia.org 作为起始 URL,它将不会进一步爬网。

因此,如何真正爬取整个维基百科?任何人都可以给一些指导吗?我是否需要专门去查找那些 URL 并放置多个起始 URL?

有人对usng WebSphinx的API教程有好的网站建议吗?

【问题讨论】:

    标签: java web-crawler wikipedia websphinx


    【解决方案1】:

    如果您的目标是抓取所有 Wikipedia,您可能需要查看可用的数据库转储。见http://download.wikimedia.org/

    【讨论】:

    • +1。通过 HTTP 抓取 Wikipedia 很粗鲁,会给服务器带来大量额外负载。
    • @GregHewgill,这是一个非常假设性的陈述。这实际上取决于您抓取网站的速度、您是否遵守 robots.txt 指令以及您认为“大量额外负载”的含义。根据维基百科“欢迎友好、低速的机器人查看文章页面,但不欢迎动态生成的页面。” - en.wikipedia.org/robots.txt 爬虫通常不是为解析充满 wiki 标记的 wikipedia-specific xml 文档而设计的,因此为 wikipedia.com 创建一个单独的系统来解析过时的 xml 转储似乎很愚蠢。
    • 我不明白:如果允许友好爬取,为什么他们在 robots.txt 中不允许这么多爬虫?
    【解决方案2】:

    我不确定,但也许 WEBSphinx 的 UserAgent 被维基百科的 robots.txt 阻止

    http://en.wikipedia.org/robots.txt

    【讨论】:

      【解决方案3】:

      我认为您无法为此选择所需的配置。切换到高级,爬取子域,不限页面大小和时间。

      但是,WebSphinx 可能无法抓取整个 Wikipedia,它会随着数据量变大而变慢,最终会停止使用接近 200mb 的内存。我推荐你NutchHeritrixCrawler4j

      【讨论】:

        【解决方案4】:

        您可能需要从一篇随机文章开始,然后从该文章开始抓取您可以找到的所有文章。当该搜索树用尽时,从新的随机文章开始。您可以使用您认为会引出最多文章的字词来为您的搜索播种,或者从首页上的精选文章开始。

        另一个问题:为什么 WebSphinx 没有进一步爬取?维基百科会阻止标识为“WebSphinx”的机器人吗?

        【讨论】:

          【解决方案5】:

          除了使用上面提到的 Wikipedia 数据库转储,您还可以使用 Wikipedia 的 API 来执行查询,例如检索 100 篇随机文章。

          http://www.mediawiki.org/wiki/API:Query_-Lists#random.2F_rn

          【讨论】:

            【解决方案6】:

            看看dbpedia,维基百科的结构化版本。

            【讨论】:

              猜你喜欢
              • 2020-07-01
              • 1970-01-01
              • 1970-01-01
              • 2019-05-24
              • 1970-01-01
              • 2017-04-30
              • 2019-07-10
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多