听说你的爬虫一直在整站里循环绕圈圈爬取重复的数据? 2024-04-09 11:33:01 今天小帅b要跟你说说增量爬虫是这样的当你去爬取某个网站的数据时你会发现这些网站随着时间的推移会更新更多的网页数据这时候你要爬取的是那些更新的网页数据而不是又一次爬取整站的内容对于一些稍微复杂点的网站它们的 url 之间会指来指去如果你根据 url 的定向去爬取可能会出现这种情况 你的爬虫一直在里面绕圈圈一直爬取重复的数据这时候你的爬虫开始陷入了对人生的大思考那么如何确保爬取的数据不要重复?接下来就是学习 python 的正确姿势 有朋友说那就直接用数据库呗在爬取前把 url 存入数据库下次爬取的时候再到数据库里面查询看下这个 url 是否存在数据库如果存在那就说明这个 url 之前已经被爬取过了如果不存在就把 url 保存到数据库中这种方式虽然可行但是如果数量一多查询速度就会大大降低从而影响爬取效率了其实python 中有一个我们熟悉的数据结构setset 里面的元素是唯一不重复的所以我们可以将 url 塞进去下次通过 in 来判断就可以了因为它的平均复杂度为 O(1)这样就比数据库的操作高效很多了 但是这种方式有一个问题使用 python 的 set是作用于内存的一旦 url 的数量增多就会很耗内存 不知道你还记得咱们之前说的这个如果你怕文件被篡改,那就这样做在这里面咱们说到了 hash通过散列可以生成唯一的指纹那么这时候我们可以使用 url 进行 hash比如进行 MD5 加密由于 MD5 值所占的内存更小所以可以通过 MD5 来降低 url 的内存也就是说直接把 url 进行 MD5然后把得到的 MD5放进 set 就好了可以做到缩短 url 的长度来降低内存的消耗当然了还有与之类似的redisredis 中也有和 Python 相似的 set我们可以使用它来存储 url 的 MD5这种缓存数据库的优点在于它可以作用于硬盘不会有消耗内存的压力而对于海量数据的情况我们可以考虑使用bloom filter它的操作方式是这样的使用 k 个 hash 函数来对集合中的 url 映射成位数组中的 k 个点然后把他们置 1下次查询的时候只要通过 hash 看看这个url 的结果是不是都是 1如果都是 1这个 url 就可能存在如果有任何一个 0就说明这个 url 一定不存在懵逼了?我来画个图吧一开始是这样的假设我们集合有 n 个 url 这里初始化了位数组都是0接着对集合中的 url 都进行 k 个 hash这里以 url4 为例 可以看到hash 之后映射到 1当下次要判断新的 url 是否在集合中的时候就可以使用 hash 去查找 只要发现有 0那么就说明这个 new_url一定不存在于集合中这样的方式可以节省超多的空间提高了空间的利用率在 python 中早有实现了 bloomfilter 的库pybloom可以自己定义容量和容错率 使用 add 方法 如果元素存在就直接返回 True 如果不存在就返回 False 此外 还可以使用动态容量的方式 ok通过以上这些方法对于数据的去重相信你应该知道怎么做了那么我们下回见啦peace 扫一扫 学习 Python 没烦恼 ps:如果你想获取更多小帅b提供的私密非公开且纯净无广告的干货 vip 教程,可以了解一下:跟小帅b一起通往「Python高手之路」 赞 (0) 相关推荐 使用 Python 爬取简书网的所有文章 第一时间获取 Python 技术干货! 阅读文本大概需要 6 分钟. 01 抓取目标 我们要爬取的目标是「 简书网 」. 打开简书网的首页,随手点击一篇文章进入到详情页面. 我们要爬取的数据有:作者. ... 一起学爬虫(Python) — 02 一起学爬虫(Python) - 19 年轻人,进来学自动化 今天要学会爬 requests模块 什么是requests模块 如何安装requests模块 怎么用requests模块 实战! reque ... 如何学习Python爬虫?学习方法分享 爬虫是Python的应用领域之一,它十分简单,学完基础知识后就可以做有关爬虫的事情,更是数据采集的利器,利用Python可以更快的提升对数据抓取的精准程度及速度,那么如何高效的学习Python爬虫技术 ... Python爬虫常见面试题! 众所周知,爬虫是Python重要的应用方向之一,也是学习Python求职的热门岗位.对此,为帮助学员们快速通过面试,小编整理了一些Python爬虫常见面试题,希望能够帮助到你们. 1. 试列出至少三种 ... python爬虫必备知识点,代理请求数据 python爬虫必备知识点,代理请求数据 Scrapy和scrapy-redis有什么区别?Python入门! Python工程师的就业方向有很多,其中包含Python爬虫开发,它是非常受欢迎的就业岗位,也是很多企业热招的岗位.那么你知道面试Python爬虫开发工程师的时候会问及哪些问题吗?老男孩教育为大家提供 ... Python爬虫新手入门教学(十三):爬取高质量超清壁纸 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ... Python爬虫入门教程(十四):爬取有声小说网站数据 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ... Python爬虫新手入门教学(七):爬取腾讯视频弹幕 基本开发环境 Python 3.6 Pycharm 相关模块的使用 jieba wordcloud 安装Python并添加到环境变量,pip安装需要的相关模块即可. 一.明确需求 选择 <欢乐喜 ... Python爬虫新手入门教学(四):爬取前程无忧招聘信息 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ... Python爬虫入门教程01:豆瓣Top电影爬取 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ... Python爬虫实战教学:爬取电影视频数据 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 做了一些小项目,用的技术和技巧会比较散比较杂,写一个小品文记录一下,帮助熟悉. 需求:经常在腾讯视 ... 介绍爬虫的原理、具体工作流程、爬取策略等内容 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章源于企通查 ,作者企通查 前言 网络爬虫也被称作网络机器人.网络蜘蛛.网络蚂蚁.网络机器人 ... python爬虫爬取网页表格数据 https://download.csdn.net/download/weixin_38581447/12870156?utm_medium=distribute.pc_relevant_downlo ... Python3爬虫教程 -课时31:Scrapy Tushare爬取微博股票数据 Python3爬虫教程 -课时31:Scrapy Tushare爬取微博股票数据