刚开始接触爬虫的时候,简直惊为天人,十几行代码,就可以将无数网页的信息全部获取下来,自动选取网页元素,自动整理成结构化的文件。
利用这些数据,可以做很多领域的分析、市场调研,获得很多有价值的信息,可以应用在很多的工作场景,于是果断开始学习。
- ❶ -
并非开始都是最容易的
刚开始对爬虫不是很了解,又没有任何的计算机、编程基础,确实有点懵逼。从哪里开始,哪些是最开始应该学的,哪些应该等到有一定基础之后再学,也没个清晰的概念。
因为要学编程,那先从 Python 开始吧。于是看了一些教程和书籍,了解基本的数据结构,然后是列表、字典、元组,各种函数和控制语句(条件语句、循环语句)。
学了一段时间,才发现自己还没接触到真正的爬虫呢,而且纯理论学习很快就忘了,回去复习又太浪费时间,简直不要太绝望。把 Python 的基础知识过了一遍之后,我竟然还没装一个可以敲代码的IDE。
- ❷ -
开始直接上手
转机出现在看过一篇爬虫的技术文章后,清晰的思路和通俗易懂的语言让我觉得,这才是我想学的爬虫。于是决定先配一个环境,试试看爬虫到底是怎么玩的。
因为怕出错,装了比较保险的 Anaconda,用自带的 Jupyter Notebook 作为IDE来写代码。看到很多人说因为配置环境出各种BUG,简直庆幸。很多时候打败你的,并不是事情本身,说的就是爬虫配置环境这事儿。
遇到的另一个问题是,Python 的爬虫可以用很多包或者框架来实现,应该选哪一种呢?我的原则就是是简单好用,写的代码少,对于一个小白来说,性能、效率什么的,统统被我 pass 了。于是开始接触 urllib、美丽汤(BeautifulSoup),因为听别人说很简单。
上手的第一个案例是豆瓣,照着一些爬取豆瓣电影的入门级例子开始看,从这些例子里面,了解了一点点爬虫的基本原理:下载页面、解析页面、定位并抽取数据。
当然并没有去系统看 urllib 和 BeautifulSoup 了,我需要把眼前实例中的问题解决,比如下载、解析页面,基本都是固定的语句,直接用就行。
用 urllib 下载和解析页面的固定句式
当然 BeautifulSoup 中的基本方法是不能忽略的,但也无非是 find、get_text() 之类,信息量很小。就这样,通过别人的思路和自己查找美丽汤的用法,完成了豆瓣电影的基本信息爬取。
用 BeautifulSoup 爬取豆瓣电影详情
- ❸ -
爬虫渐入佳境
有了一些套路和形式,就会有目标,可以接着往下学了。自己去摸索爬取更多的信息,爬取多个页面。这个时候就发现基础不足了,比如爬取多个元素、翻页、处理多种情况等涉及的语句控制,又比如提取内容时涉及到的字符串、列表、字典的处理,还远远不够。
再回去补充 Python 的基础知识,就很有针对性,而且能马上能用于解决问题,也就理解得更深刻。
后来认识到 xpath 之后相见恨晚,这才是入门必备利器啊,直接Chrome复制就可以了,指哪打哪。即便是要自己写 xpath,以w3school上几页的 xpath 教程,一个小时也可以搞定了。
requests+xpath 爬取豆瓣TOP250图书信息
- ❹ -
跟反爬虫杠上了
通过 requests+xpath,我可以去爬取很多网站网站了,后来自己练习了小猪的租房信息和当当的图书数据。爬拉勾的时候发现了问题,自己的请求根本不会返回信息,然后终于知道别人代码中的 headers 是干啥的了😂。
在爬虫中添加 headers 信息,伪装成真实用户
接着是各种定位不到元素,然后知道了这是异步加载,数据根本不在网页源代码中,需要通过抓包来获取网页信息。于是在各种 JS、XHR的文件中 preview,寻找包含数据的链接。
当然知乎还好,本身加载的文件不多,找到了 json 文件直接获取对应的数据。(这里要安利一个chrome插件:jsonview,让小白轻松看懂 json 文件)
浏览器抓取 JavaScript 加载的数据
在这里就对反爬虫有了认识,当然这还是最基本的,更严格的IP限制、验证码、文字加密等等,可能还会遇到很多难题。
比如后来在爬其他网站的时候就被封了IP,简单的可以通过 time模块控制爬取频率的方法解决,限制比较严格或者需要保证爬取速度,就尝试用代理IP来解决。
当然,后来也试了一下 Selenium,这个就真的是按照真实的用户浏览行为(点击、搜索、翻页)来实现爬虫,所以对于那些反爬虫特别厉害的网站,又没有办法解决,Selenium 超级好用,虽然速度稍微慢点。
- ❺ -
尝试强大的 Scrapy 框架
有了 requests+xpath 和抓包大法,就可以做很多事情了,豆瓣各分类下的电影,58同城、知乎、拉勾这些网站基本都没问题。不过,当爬取的数据量级很大,而且需要灵活地处理各个模块的话,会显得很力不从心。
于是了解到强大的 Scrapy 框架,它不仅能便捷地构建 Request,还有强大的 Selector 能够方便地解析 Response,然而最让人惊喜的还是它超高的性能,可以将爬虫工程化、模块化。
Scrapy 框架的基本组件
学会 Scrapy,自己去尝试搭建了简单的爬虫框架,在做大规模数据爬去的时候能够结构化、工程化地思考大规模的爬取问题。
当然 Scrapy 本身的 selector 、中间件、spider 等会比较难理解,还是建议结合具体的例子,参考别人的代码,去理解其中实现的过程,这样能够更好地理解。
用 Scrapy 爬取了大量租房信息
- ❻ -
本地文件搞不动了,上数据库
爬回来大量的数据之后就发现,本地的文件存起来非常不方便,即便存下来了,打开大文件电脑会卡得很严重。怎么办呢?果断上数据库啊,于是开始入坑 MongoDB。结构化、非结构化的数据都能够存储,安装好 PyMongo,就可以方便地在 Python 中操作数据库了。
当然对于爬虫这一块,并不需要多么高深的数据库技术,主要是数据的入库和提取,增删查改等基本操作。
爬取拉勾招聘数据并用 MongoDB 存储
- ❼ -
传说中的分布式爬虫
这个时候,基本上很大一部分的网页都能爬了,瓶颈就集中到爬取大规模数据的效率。因为学了 Scrapy,于是自然地接触到一个很厉害的名字:分布式爬虫。
分布式这个东西,一听不明觉厉,感觉很恐怖,但其实就是利用多线程的原理让多个爬虫同时工作,除了前面学过的 Scrapy 和 MongoDB,好像还需要了解 Redis。
Scrapy 用于做基本的页面爬取,MongoDB 用于存储爬取的数据,Redis 则用来存储要爬取的网页队列,也就是任务队列。
分布式这东西看起来很吓人,但其实分解开来,循序渐进地学习,也不过如此。
分布式爬58同城:定义项目内容部分
零基础学习爬虫,坑确实比较多,总结如下:
1.环境配置,各种安装包、环境变量,对小白太不友好;
2.缺少合理的学习路径,上来 Python、HTML 各种学,极其容易放弃;
3.Python有很多包、框架可以选择,但小白不知道哪个更友好;
4.遇到问题甚至不知道如何描述,更不用说去寻找解决办法;
5.网上的资料非常零散,而且对小白不友好,很多看起来云里雾里;
6.有些东西看似懂了,但结果自己写代码还是很困难;
……………………
所以跟我一样,很多人爬坑最大的体会是:尽量不要系统地去啃一些东西,找一个实际的项目(从豆瓣这种简单的入手),直接开始就好。
因为爬虫这种技术,既不需要你系统地精通一门语言,也不需要多么高深的数据库技术,从实际的项目中去学习这些零散的知识点,你能保证每次学到的都是最需要的那部分。
当然麻烦的是,在具体的问题中,如何找到具体需要的那部分学习资源、如何筛选和甄别,遇到困难时如何有效解决,是很多初学者面临的大问题。
DC学院准备了一门非常系统的爬虫课程,除了为你提供一条清晰、无痛的学习路径,我们甄选了最实用的学习资源以及庞大的主流爬虫案例库。即便是零基础,经过短时间的学习,也能很好地掌握爬虫这个技能,获取你想得到的数据。
已有 2000+ 同学加入,超级优惠限额开启
优惠限前100名,先到先得,速抢!
《Python爬虫:入门+进阶》大纲
第一章:Python 爬虫入门
1、什么是爬虫
网址构成和翻页机制
网页源码结构及网页请求过程
爬虫的应用及基本原理
2、初识Python爬虫
Python爬虫环境搭建
创建第一个爬虫:爬取百度首页
爬虫三步骤:获取数据、解析数据、保存数据
3、使用Requests爬取豆瓣短评
Requests的安装和基本用法
用Requests 爬取豆瓣短评信息
一定要知道的爬虫协议
4、使用Xpath解析豆瓣短评
解析神器Xpath的安装及介绍
Xpath的使用:浏览器复制和手写
实战:用 Xpath 解析豆瓣短评信息
5、使用pandas保存豆瓣短评数据
pandas 的基本用法介绍
pandas文件保存、数据处理
实战:使用pandas保存豆瓣短评数据
6、浏览器抓包及headers设置(案例一:爬取知乎)
爬虫的一般思路:抓取、解析、存储
浏览器抓包获取Ajax加载的数据
设置headers 突破反爬虫限制
实战:爬取知乎用户数据
7、数据入库之MongoDB(案例二:爬取拉勾)
MongoDB及RoboMongo的安装和使用
设置等待时间和修改信息头
实战:爬取拉勾职位数据
将数据存储在MongoDB中
补充实战:爬取微博移动端数据
8、Selenium爬取动态网页(案例三:爬取淘宝)
动态网页爬取神器Selenium搭建与使用
分析淘宝商品页面动态信息
实战:用Selenium 爬取淘宝网页信息
第二章:Python爬虫之Scrapy框架
1、爬虫工程化及Scrapy框架初窥
html、css、js、数据库、http协议、前后台联动
爬虫进阶的工作流程
Scrapy组件:引擎、调度器、下载中间件、项目管道等
常用的爬虫工具:各种数据库、抓包工具等
2、Scrapy安装及基本使用
Scrapy安装
Scrapy的基本方法和属性
开始第一个Scrapy项目
3、Scrapy选择器的用法
常用选择器:css、xpath、re、pyquery
css的使用方法
xpath的使用方法
re的使用方法
pyquery的使用方法
4、Scrapy的项目管道
Item Pipeline的介绍和作用
Item Pipeline的主要函数
实战举例:将数据写入文件
实战举例:在管道里过滤数据
5、Scrapy的中间件
下载中间件和蜘蛛中间件
下载中间件的三大函数
系统默认提供的中间件
6、Scrapy的Request和Response详解
Request对象基础参数和高级参数
Request对象方法
Response对象参数和方法
Response对象方法的综合利用详解
第三章:Python爬虫进阶操作
1、网络进阶之谷歌浏览器抓包分析
http请求详细分析
网络面板结构
过滤请求的关键字方法
复制、保存和清除网络信息
查看资源发起者和依赖关系
2、数据入库之去重与数据库
数据去重
数据入库MongoDB
第四章:分布式爬虫及实训项目
1、大规模并发采集——分布式爬虫的编写
分布式爬虫介绍
Redis数据库和Scrapy_redis安装和使用
消息队列和RabbitMQ
Celery分布式队列简介
2. 实训项目(一)—— 58同城出租信息爬取
爬取58同城租房信息
scrapy爬虫抓取网站的整体流程
解析函数和错误回调的编写
利用管道进行数据清洗、计算和入库
使用代理IP突破反爬限制
确定网页爬取的优先级和管道的优先级
3. 实训项目(二)—— 去哪儿网模拟登陆
利用cookie进行模拟登陆
cookie和session的重要性
分析HTTP请求寻找模拟登陆需要的所有cookie值
4. 实训项目(三)—— 京东商品数据抓取
通用爬虫CrawlSpider
链接提取器和爬取规则
部署分布式爬虫实现分布式爬取
利用scrapy_redis实现URL去重
- 高效的学习路径 -
一上来就讲理论、语法、编程语言是非常不合理的,课程会直接从具体的案例入手,通过实际的操作,学习具体的知识点。我们为你规划了一条系统的学习路径,让学习更加系统和高效。
说点具体的,比如我们会直接用 lxml+Xpath取代 BeautifulSoup 来进行网页解析,减少你不必要的检查网页元素的操作,工具的安装都有详细教程及常见错误处理,多种工具都能完成的,我们会给你最简单的方法,这些看似细节,但可能是很多人都会踩的坑。
- 每课都有学习资料 -
网上的资料非常不系统,且良莠不齐,往往搜索、筛选非常浪费时间。当然你可能收集了以G计的的学习资源,但保存后从来没打开过?我们已经帮你找到了最有用的那部分,并且用最简单的形式描述出来,帮助你学习,你可以把更多的时间用于练习和实践。
考虑到各种各样的问题,我们在每一节都准备了课后资料,包含四个部分:
1.课程重点笔记,详细阐述重点知识,帮助你理解和后续快速复习;
2.默认你是小白,补充所有基础知识,哪怕是软件的安装与基本操作;
3.课内外案例提供参考代码学习,让你轻松应对主流网站爬虫;
4.超多延伸知识点和更多问题的解决思路,让你有能力去解决实际中遇到的一些特殊问题。
某节部分课后资料
- 超多案例,覆盖主流网站 -
课程中提供了目前最常见的网站爬虫案例:豆瓣、百度、知乎、淘宝、京东、微博……每个案例在课程视频中都有详细分析,老师带你完成每一步操作,专治各种 “看得懂案例,写不出代码” 。
另外,我们还会补充比如小猪、链家、58同城、网易云音乐、微信好友等案例,提供思路与代码。多次的模仿和练习之后,你可以很轻松地写出自己的爬虫代码,并能够轻松爬取这些主流网站的数据。
- 爬虫技能进阶及数据存储、处理 -
懂得基本的爬虫是远远不够的,所以我们会用实际的案例,带你了解一些网站的反爬虫措施,并且用具体的技术绕过限制。比如异步加载、IP限制、headers限制、验证码等等,这些比较常见的反爬虫手段,你都可以很好地规避。
工程化的爬虫、及分布式爬虫技术,让你有获取大规模数据的可能,一次性从入门到进阶。除了爬虫的内容,你还将了解数据库(Mongodb)、pandas 的基本知识,帮你存储爬取的数据,同时可以对数据进行管理和清洗,你可以获得更干净的数据,以便后续的分析和处理。
- 导师团队 -
小X和小Y都是知乎爬虫话题下的大V,并且都是造数的全职爬虫工程师。他们给过我很多帮助,这个课也主要由他们来讲授。小X和小Y在在成为大佬的路上也爬过很多坑,所以知道小白要学什么、怎么学。最重要的是,他们喜欢分享,还威胁大BOSS黄震昕(造数CEO)加入,这也是花无数心血完成的精品课程。
黄震昕
造数科技创始人兼CEO
创立的造数科技是一家新一代智能云数据采集服务提供商,帮助企业和个人轻松获取并分析、利用外部数据,帮助其完成市场分析、竞品监控、舆情监控、商机发现等。造数上线一年以来,已经服务了13000多个企业和个人客户,分布在零售、电商、金融、资询、大数据等行业。造数新一代智能云爬虫产品已编入人教版高中信息技术教材(2018年9月出版)。
刘畅(小X)
高级爬虫工程师
造数爬虫项目组主要负责人, CPO(首席爬虫工程师),因常年对淘宝,京东,58,高德,美团,等互联网独角兽企业进行反爬策略分析并抓取,而被各大互联网公司成为头号“害虫”,见之必杀(程序员何苦为难程序员),目前造数构建大型分布式爬虫,和开发日IP过十万的高效代理池系统。
张世润(小Y)
高级爬虫工程师
爱好者:喜欢Python,擅长爬虫,数据处理;
创作者:知乎爬虫话题大V,原创文章近百篇,拥有数千粉丝;
学习者:爱学习的“萌新”,自学成长为爬虫工程师,深谙自学之道,愿分享所有能量带大家入门。
- 老师及时解决你的每一个问题 -
除了经验丰富、带你一步步实操的课程老师之外,DC学院还建立了提升效率的学习群,助教老师会在群里及时解答学员每一个疑问。同时,你还可以跟一群未来优秀的爬虫工程师,分享经验、代码、数据,探讨爬虫和数据分析技术。
也有同学经过一个月的学习,能够写出分布式的框架,去爬去大规模的数据。我们也有信心让你在短时间内,达到爬取大规模数据的水平。
快速解决问题,学习效率才更高
【课程信息】
「 课程名称 」
Python 爬虫:入门+进阶
「 学习周期 」
建议每周至少学习8小时,2个月内完成课程
「 上课形式 」
录播课程,可随时开始上课,反复观看
「 面向人群 」
零基础的小白,负基础的小白白
「 答疑形式 」
学习群老师随时答疑,即便是最初级的问题
「 课程资料 」
重点笔记、操作详解、参考代码、课后拓展
「 课程案例 」
爬取豆瓣短评、图书、电影数据
爬取知乎用户、回答数据
爬取淘宝、京东商品数据
爬取拉勾职位数据
爬取去哪儿旅游景点数据
爬取58同城租房数据
超低优惠名额打架抢购中
¥299(原价¥399),限额100名
长按下方二维码,立即去抢
如有任何疑问,按下方二维码入群咨询
若群满,加 Alice 微信:datacastle2017
哦,对了,我们给每个按要求完成学习的同学
准备了DC学院的学习证书
每个证书编号对应一个独立身份信息
- 写在最后 -
很多人问,学爬虫有什么用? 学完能做什么?爬虫好学吗? 分四个点来说说我个人的体会:
1. 数据增长的趋势是不可逆的,信息不对称也会越发明显,如何有效获取互联网的大量数据,来支撑有效的市场、舆论、产品、商业分析,得出有价值的信息,爬虫将是一个基础但又核心的技能。
2. 在前面学习的同学中,很多已经能够写基础的分布式框架,有人爬取租房、电商商品、书籍、电影等数据进行了分析,有人做出了每天自动爬取新闻、天气的Demo,也有人爬到了大量的“妹子图”……
3. 未来属于大数据和人工智能,以 Python 为代表的编程技术在其中应用广泛,获得编程思维、掌握快速学习的能力,会大幅增加核心竞争力。爬虫将是学习 Python 最好的入门途径,没有之一。
4. 很多人学了很多年 Office 还是玩不转,而正确学习爬虫,一天爬豆瓣,两天爬知乎,也很轻松,所以爬虫并不难,但是要有好的学习规划,避开那些容易让人放弃的坑。
点击下方“阅读原文”,开始掌握爬虫技能
∨