我是如何零基础开始能写爬虫的?

2018 年 10 月 30 日 Python开发者



刚开始接触爬虫的时候,简直惊为天人,十几行代码,就可以将无数网页的信息全部获取下来,自动选取网页元素,自动整理成结构化的文件


利用这些数据,可以做很多领域的分析、市场调研,获得很多有价值的信息,可以应用在很多的工作场景,于是果断开始学习。


- ❶ -

并非开始都是最容易的


刚开始对爬虫不是很了解,又没有任何的计算机、编程基础,确实有点懵逼。从哪里开始,哪些是最开始应该学的,哪些应该等到有一定基础之后再学,也没个清晰的概念。


因为要学编程,那先从 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(案例二:爬取拉勾)

MongoDBRoboMongo的安装和使用

设置等待时间和修改信息头

实战:爬取拉勾职位数据

将数据存储在MongoDB

补充实战:爬取微博移动端数据

 

8、Selenium爬取动态网页(案例三:爬取淘宝)

动态网页爬取神器Selenium搭建与使用

分析淘宝商品页面动态信息

实战:用Selenium 爬取淘宝网页信息

 

 

第二章:Python爬虫之Scrapy框架

 

1、爬虫工程化及Scrapy框架初窥

htmlcssjs、数据库、http协议、前后台联动

爬虫进阶的工作流程

Scrapy组件:引擎、调度器、下载中间件、项目管道等

常用的爬虫工具:各种数据库、抓包工具等

 

2、Scrapy安装及基本使用

Scrapy安装

Scrapy的基本方法和属性

开始第一个Scrapy项目

 

3、Scrapy选择器的用法

常用选择器:cssxpathrepyquery

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 还是玩不转,而正确学习爬虫,一天爬豆瓣,两天爬知乎,也很轻松,所以爬虫并不难,但是要有好的学习规划,避开那些容易让人放弃的坑。




点击下方“阅读原文”,开始掌握爬虫技能




登录查看更多
0

相关内容

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
139+阅读 · 2020年2月16日
【新书】Python编程基础,669页pdf
专知会员服务
193+阅读 · 2019年10月10日
抖音爬虫
专知
3+阅读 · 2019年2月11日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
如何用Python做舆情时间序列可视化?
CocoaChina
11+阅读 · 2017年7月21日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
如何用Python从海量文本抽取主题?
AI研习社
7+阅读 · 2017年7月6日
Continual Unsupervised Representation Learning
Arxiv
7+阅读 · 2019年10月31日
Meta-Learning to Cluster
Arxiv
17+阅读 · 2019年10月30日
Arxiv
6+阅读 · 2018年5月22日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
139+阅读 · 2020年2月16日
【新书】Python编程基础,669页pdf
专知会员服务
193+阅读 · 2019年10月10日
相关资讯
抖音爬虫
专知
3+阅读 · 2019年2月11日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
如何用Python做舆情时间序列可视化?
CocoaChina
11+阅读 · 2017年7月21日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
如何用Python从海量文本抽取主题?
AI研习社
7+阅读 · 2017年7月6日
相关论文
Top
微信扫码咨询专知VIP会员