【问题标题】:Data structure for crawler爬虫的数据结构
【发布时间】:2012-05-16 10:11:27
【问题描述】:

大家好!我要编写网站爬虫,它从根地址开始,然后爬取每个找到的链接(仅限内部链接)。所以我面临这个问题: 爬虫必须从根开始,然后它应该解析网页(根页面),然后获取所有链接。在获取链接时,它不应两次抓取同一页面。各位有什么好的数据结构还是我需要使用 SQL 或其他索引数据结构?

【问题讨论】:

    标签: web-crawler web-scraping


    【解决方案1】:

    您可能正在寻找的数据结构是Tree

    如果是爬虫,则不需要它,因为从根目录开始,您可以维护一个访问过的 URL 的“列表”,并且每次您要跟踪一个链接时,检查之前是否遇到过它.如果还没有遇到,则将其添加到列表中并遵循它。

    虽然它不一定是一个列表(即数组),但它可以是 dictionary 或其他有助于加快搜索速度的数据结构。

    它也可以是 SQL 数据库或类似 redis 的键值存储。如果您使用类似的东西,那么所有索引和查询都将由数据库系统为您处理,您可以通过标准方法(SQL、特殊 API 等)与之通信。

    但是,这很容易,在“爬行”中需要考虑一些更重要的事情,也许最好先检查一下您尝试做的事情是否可以通过already available crawler 完成。

    【讨论】:

      【解决方案2】:

      我建议在这里查看我的答案:Designing a web crawlerHow can I bring google-like recrawling in my application(web or console)

      我已经回答了您提出的很多问题。要放弃的关键是爬虫使用 URL-Seen 测试来有效地确定他们是否应该爬取链接。 URL-Seen 测试通常使用快速解析键(url)的映射结构来实现。常用的解决方案有leveldb、berkeleydb等嵌入式数据库等NOSQL解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        • 2019-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多