python协程实现一万并发_求你别再花大价钱学 Python 之协程高并发爬虫
继上次 《求你别再花大价钱学 Python 之爬虫实战》发布后,有一些网友提到单个爬虫效率有限,无法大规模应用的问题。这里本人再实战一个实用性较高的高并发爬虫,充分运用了协程的优势,即使在单机的情况下也可以高并发实现比较高效率的爬取。
本 Chat 以代码实战为主,讲到的理论都是简单介绍原理,最终附上完整的代码,已验证过可以长期运行。代码简洁,依赖简单,部署方便,容易扩展为其他用途的爬虫。
爬虫知识回顾
爬虫是指在网上漫游或者定向抓取信息的程序。按照爬虫的目的,可以大致分为通用爬虫和垂直爬虫。通用爬虫即是我们熟知的 Google/某 Du 等,他们对网上的一切信息都感兴趣,做的是全网信息聚合索引的工作;垂直爬虫是指只对某个领域的信息感兴趣的爬虫,例如医学类、生物类 Web 感兴趣,甚至是针对某个 App 某个公众号的爬虫。
我们这里尝试介绍一个定向于教育网爬虫作为例子。
主要回顾爬虫的相关基础知识
1. 爬虫语言
这是一个旧文,讲了应对各种情况下的爬虫方案,不再重复介绍。
总的来说,需要想办法尽量去模仿人使用浏览器去放问相关资源,以躲过对方服务器的反爬策略。
2. 内容存储
一个采集量大的爬虫,24 小时不间断运作,爬回来的文件对存储消耗是非常大的,需要安排一些低成本的存储空间去做数据的存储管理。另外,还要注意对内容进行压缩处理,爬虫爬回来的很大部分是 HTML 信息,这种文本信息的压缩率可以渠道 8:1~20:1 之间。
3. 内容索引
爬回来的内容是需要经过索引才可以使用的,索引方面推荐关注 Elasticsearch,功能强大支持分布式多节点部署,且配置起来的复杂度低,对于入门及其友好。
4. NLP
内容爬回来之后,最难的不是存储的索引,其实是对内容的处理和加工。从简单的文章内容的摘要、文章内容的原创度分析、文章行业领域归类、文章语意的分析和理解。其中涉及了太多自然语言处理的内容了,博大精深,这里无法展开详细介绍。可以参考 https://github.com/yandexdataschool/nlp_course,好多星。