python爬虫下载缓存

下载缓存

​ 从已爬取到网页中抓取数据,已经将抓取结果保存到表格后。如果还需要抓取另一个字段,需要重新下载整个网站,耗时严重。通过对已爬取网页进行缓存,让每个网页只下载一次。

​ 想要支持缓存,需要在URL下载之前检查缓存,此外还需要把限速功能移到函数内部,真正发生下载时才会触发限速,而在加载缓存时不会触发。缓存下载结果,可以将下载到的网页存储到文件系统中。为了最小化缓存所需要的磁盘空间,我们可以对下载得到的HTML文件进行压缩处理。只需要在保存磁盘前使用zlib压缩序列化字符串即可,fp.write(zlib.compress(pickle.dumps(res)))。而从磁盘加载后解压使用pickle.loads(zlib.decompress(fp.read()))

​ 网页内容随时都有可能发生变化,存储在缓存中的数据存在过期风险,我们可以为缓存数据添加过期时间,以便爬虫知道什么时候重新下载网页。

​ 为了避免磁盘缓存的限制,可以在数据库中创建缓存。爬取时可能需要缓存大量数据,但是又不需要任何复杂的连接操作,因此可以选用NoSQL数据库,可以选择MongoDB作为缓存数据库。通过MongoDB创建timestamp索引,在达到给定时间戳一定秒数之后,可以自动删除记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江小鱼

知识创造财富,余额还是小数

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值