设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 5628|回复: 0
打印 上一主题 下一主题

加速数据采集的措施

[复制链接]

5

主题

0

好友

145

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2020-6-24 16:46:30 |只看该作者 |倒序浏览

当爬取的数据量非常大时,如何高效快速地进行数据抓取是关键。
常见的措施有多线程、多进程、异步、分布式、细节优化等。
加速 / 多线程、多进程
爬虫是网络请求密集型任务,所以使用多进程和多线程可以大大提高抓取效率,如使用 threading、multiprocessing 等。

加速 / 异步
将爬取过程改成非阻塞形式,当有响应式再进行处理,否则在等待时间内可以运行其他任务,如使用 asyncio、aiohttp、Tornado、Twisted、gevent、grequests、pyppeteer、pyspider、Scrapy 等。
加速 / 分布式
分布式的关键在于共享爬取队列,可以使用 celery、huey、rq、rabbitmq、kafka 等来实现任务队列的对接,也可以使用现成的框架 pyspider、Scrapy-Redis、Scrapy-Cluster 等。
加速 / 优化
可以采取某些优化措施来实现爬取的加速,如:
  • DNS 缓存
  • 使用更快的解析方法
  • 使用更高效的去重方法
  • 模块分离化管控
加速 / 架构
如果搭建了分布式,要实现高效的爬取和管理调度、监控等操作,我们可以使用两种架构来维护我们的爬虫项目。
  • 将 Scrapy 项目打包为 Docker 镜像,使用 K8S 控制调度过程。
  • 将 Scrapy 项目部署到 Scrapyd,使用专用的管理工具如 SpiderKeeper、Gerapy 等管理。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 02:00 , Processed in 0.021861 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部