《Python从入门到实战》这个系列基础的知识点终于给大写完啦~
今天开始给大家开始写写爬虫相关的内容:
新一期的《Python爬虫系列》介绍了利用Python 3进行网络爬虫开发的各项技术,从环境配置、
理论基础到进阶实战、分布式大规模采集,详细介绍了网络爬虫开发过程中需要了解的知识点,并
通过多个案例介绍了不同场景下采用不同爬虫技术实现数据爬取的过程。
我坚信,大家学习和掌握了这些技术之后,成为一个爬虫高手将不再是梦想!
大数据成为21世纪最为重要的经济资源之一。
网络爬虫就是一种高效的信息采集利器,利用它可以快速、准确地采集我们想要的各种数据资源。因此,可以说,网络爬虫技术几乎已成为大数据时代IT从业者的必修课程。
我们需要采集的数据大多来源于互联网的各个网站。
然而,不同的网站结构不一、布局复杂、渲染方式多样,有的网站还专门采取了一系列“反爬”的防范措施。
因此,为准确高效地采集到需要的数据,我们需要采取具有针对性的反制措施。
网络爬虫与反爬措施是矛与盾的关系,网络爬虫技术就是在这种针锋相对、见招拆招的不断
斗争中,逐渐完善和发展起来的。
爬虫现在的火热程度我就不说了,先说一下这门技术能干什么事儿,主要为以下三方面:
1.爬取数据,进行市场调研和商业分析
爬取知乎、豆瓣等网站的优质话题内容;抓取房产网站买卖信息,分析房价变化趋势、做不同区域的房价分析;爬取招聘网站职位信息,分析各行业人才需求情况及薪资水平。
2.作为机器学习、数据挖掘的原始数据
比如你要做一个推荐系统,那么你可以去爬取更多维度的数据,做出更好的模型。
3.爬取优质的资源:图片、文本、视频
爬取游戏内的精美图片,获得图片资源以及评论文本数据。
掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现。
01)先来了解爬虫是怎么实现的?
大部分爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。
简单来说,我们向服务器发送请求后,会得到返回的页面,通过解析页面之后,我们可以抽取我们想要的那部分信息,并存储在指定的文档或数据库中。
在这部分你可以简单了解 HTTP 协议及网页基础知识,比如 POST\GET、HTML、CSS、JS,简单了解即可。
02)实现简单的信息爬取
Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,建议你从
requests+Xpath 开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取
数据。如果你用过 BeautifulSoup,会发现 Xpath 要省事不少,一层一层检查元素代码的工
作,全都省略了。
掌握之后,你会发现爬虫的基本套路都差不多,一般的静态网站根本不在话下,像知乎、豆
瓣等网站的公开信息都可以爬取下来。当然如果你需要爬取异步加载的网站,可以学习浏览
器抓包分析真实请求或者学习Selenium来实现自动化爬取,这样,知乎、时光网、猫途鹰这
些动态的网站也基本没问题了。
你还需要了解 Python 的基础知识,比如:文件读写操作:用来读取参数、保存爬取内容
list(列表)、dict(字典):用来序列化爬取的数据条件判断(if/else):解决爬虫中的判断是否执行
循环和迭代(for ……while):用来循环爬虫步骤
03)应对特殊网站的反爬机制
爬虫过程中也会经历一些绝望啊,比如被网站封IP、比如各种奇怪的验证码、userAgent访问
限制、各种动态加载等等。
遇到这些反爬虫的手段,当然还需要一些高级的技巧来应对,常规的比如访问频率控制、使
用代理IP池、抓包、验证码的OCR处理等等。
比如我们经常发现有的网站翻页后url并不变化,这通常就是异步加载。我们用开发者工具去
分析网页加载信息,通常能够得到意外的收获。
往往网站在高效开发和反爬虫之间会偏向前者,这也为爬虫提供了空间,掌握这些应对反爬
虫的技巧,绝大部分的网站已经难不到你了。
04)Scrapy 与进阶分布式
使用 requests+xpath 和抓包大法确实可以解决很多网站信息的爬取,但是对于信息量比较大
或者需要分模块爬取的话,就会显得寸步难行。
后来应用到了强大的 Scrapy 框架,它不仅能便捷地构建 Request,还有强大的 Selector 能
够方便地解析 Response,然而最让人惊喜的还是它超高的性能,可以将爬虫工程化、模块化。
学会 Scrapy,自己去尝试搭建了简单的爬虫框架,在做大规模数据爬取的时候能够结构
化、工程化地思考大规模的爬取问题,这使我可以从爬虫工程的维度去思考问题。
再后来开始逐渐接触到分布式爬虫,这个东西听着挺唬人,但其实就是利用多线程的原理让
多个爬虫同时工作,能够实现更高的效率。
其实学习到这里,你基本可以说就是一个爬虫老司机了,外行看很难,但其实并没有那么复
杂。因为爬虫这种技术,既不需要你系统地精通一门语言,也不需要多么高深的数据库技
术,高效的姿势就是从实际的项目中去学习这些零散的知识点,你能保证每次学到的都是最
需要的那部分。当然唯一麻烦的是,在具体的问题中,如何找到具体需要的那部分学习资
源、如何筛选和甄别,是很多初学者面临的一个大问题。
不过不用担心,这次不是就给大家准备详细的写系列文章嘛!
爬虫系列的会写的一些知识点大概率的给大家罗列下,让大家心里有个底儿!!!!
注意:文章内容跟题目肯定会修改或者增加的哈,这只是一个大概的目录大纲给大家展示下,普遍
的一些爬虫内容要说的一些东西!有框架之后跟着框架目录走就可以继续下下去了