爬虫开发知识入门基础(4)

回复
laical
崭露头角
崭露头角
帖子: 20
注册时间: 2020年03月26日 17:45
联系:

爬虫开发知识入门基础(4)

帖子 laical »

爬虫加速
当爬取的数据量非常大时,如何高效快速地进行数据抓取是关键。
常见的措施有多线程、多进程、异步、分布式、细节优化等。


爬虫加速 / 多线程、多进程
爬虫是网络请求密集型任务,所以使用多进程和多线程可以大大提高抓取效率,如使用 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 等管理。 当然爬虫采集数据使用高质量的http代理 ,效果是最好的。
回复

在线用户

正浏览此版面之用户: 没有注册用户 和 2 访客