一、Python爬虫入门:
1、Python编程基础:
若没有掌握Python编程基础,则建议先学习Python基础知识,掌握一些常用库(如urllib、requests、BeautifulSoup、selenium等),掌握Python基础语法,学习函数、容器、类、文件读写等常用概念。
2、抓取网页流程:
确定爬取的页面和请求时的Headers,构建一个可能的请求;
进行内容抓取,要注意上一步传入的请求是否作为参数传递;
根据不同的URL或字段的值,进行不同的操作,如解析HTML,提取大字符串;
根据抓取结果,给出不同的操作,可以在同一个爬虫中完成多项多重任务;
完成自己想要的任务,如把爬取结果存储到MySQL服务器或向服务器发送指令。
3、反爬(Anti-crawling)技术:
抓取网站内容时,难免会遇到反爬(anti-crawling)技术,一般来说,分为以下几种:
(1)验证码:当爬虫抓取太频繁时,有的网站会要求用户输入验证码,以保证爬虫的页面访问不被封杀。
(2)User-agent:有的网站会根据浏览器的User-agent字段检测,以保证浏览器的访问不被封杀,因此可以在请求中加入多个不同的User-agent,用以平衡爬虫的访问频率。
(3)爬虫技术:爬虫可以通过模拟浏览器的行为,自动化完成抓取网页内容,目前最常见的抓取技术是基于Python或Javascript构建,通过selenium、Mechanize等浏览器模拟技术,可以有效抓取动态网页内容。
4、分析取得的数据:
获取网页的过程只是爬虫的第一步,真正有用的信息在隐藏在抓取的页面数据,需要根据正则表达式和XPath来提取,结合各种解析库可以实现自动化提取所需信息,并将其存储到数据库当中,以供后续使用。
python网络爬虫总的来说有五个大的方面:
前端知识——基础爬虫——框架爬虫——分布式爬虫——突破反爬虫
1.前端知识:
“网络爬虫”很明显对象是网络,也就是网页。说到网页,这里就涉及到了前端的知识了,不过大家也不要慌,只要懂点必要的HTML5框架、网页的http请求、还有JavaScript、css3的知识就可以了,以这样的水平也是可以学会爬虫的啦。当然,如果要非常精通python网络爬虫的话,深入学习前端知识是必要的。
2.基础爬虫:
(1)基础库:urllib模块/requests第三方模块
首先爬虫就是要从网页上把我们需要的信息抓取下来的,那么我们就要学习urllib/requests模块,这两种模块是负责爬取网页的。这里大家觉得哪一种用的习惯就用哪一种,选择一种精通就好了。小编推荐读者使用使用requests模块,因为这一种简便很多,容易操作、容易理解,所以requests被称为“人性化模块”。
(2)多进程、多线程和协程:
为什么要学着三个知识呢?假如你要爬取200万条的数据,使用一般的单进程或者单线程的话,你爬取下载这些数据,也许要一个星期或是更久。试问这是你想要看到的结果吗?显然单进程和单线程不要满足我们追求的高效率,太浪费时间了。只要设置好多进程和多线程,爬取数据的速度可以提高10倍甚至更高的效率。
(3)网页解析提取库:xpath/BeautifulSoup4/正则表达式
通过前面的(1)和(2)爬取下来的是网页源代码,这里有很多并不是我们想要的信息,所以需要将没用的信息过滤掉,留下对我们有价值的信息。这里有三种解析器,三种在不同的场景各有特色也各有不足,总的来说,学会这三种灵活运用会很方便的。推荐理解能力不是很强的朋友或是刚入门爬虫的朋友,学习BeautifulSoup4是很容易掌握并能够快速应用实战的,功能也非常强大。
(4)反屏蔽:请求头/代理服务器/cookie
在爬取网页的时候有时会失败,因为别人网站设置了反爬虫措施了,这个时候就需要我们去伪装自己的行为,让对方网站察觉不到我们就是爬虫方。请求头设置,主要是模拟成浏览器的行为;IP被屏蔽了,就需要使用代理服务器来破解;而cookie是模拟成登录的行为进入网站。
(5)异常:超时处理/异常处理,这里不做介绍了,自己去了解一下。
(6)数据储存库:文件系统储存/MySQL/MongoDB
数据的储存大概就这三种方式了,文件系统储存是运用了python文件操作来执行的;而MySQL要使用到数据库创建表格来储存数据;MongoDB在爬虫里是非常好的储存方式,分布式爬虫就是运用了MongoDB来储存的。各有特色,看自己需要哪种,在灵活运用。
(7)动态网页抓取:Ajax/PhantomJS/Selenium这三个知识点
(8)抓包:APP抓包/API爬虫
3.框架爬虫:主流且热门的scrapy框架/人性化的pyspider框架
框架不止这两种,但是很多时候就只用到了这些框架,所以把这两种掌握熟悉了就可以了。
4.分布式爬虫:python操作Redis/scrapy操作Redis
5.突破反爬虫:useragent池/禁用cookies/设置下载延时和自动限速/代理IP池/tor代理/分布式下载器
以上就是python网络爬虫的从入门到精通的知识框架,希望这篇文章能让读者高效的学好python网络爬虫。
为什么学爬虫
在最新的编程语言排行榜上,Pyhton超越Java,成为了榜一,越来越多的程序员选择Python,甚至有人说,使用Python是“面向未来编程”。关于Python与“爬虫”的关系,我想不用多说你也能看出来爬虫的火热程度。
其次,掌握爬虫技术后,你会看到很多不同风景,在你使用爬虫爬取数据的过程中,你会感到非常好玩儿,相信我,这种趣味性和好奇心,会让你对Python有一种天生的喜爱感,为让你有深入学习Python的动力。
另外,在这个数据为王的时代,互联网上充斥着大量形形色色繁杂的数据,我们要从这个庞大的互联网上来获取到我们所需要的数据, 爬虫是不二之选。无论是过去的搜索引擎,还是时下火爆的数据分析,都离不开爬虫,除了好玩之外,爬虫是实实在在有非常多的用武之地的,事实上,很多公司在招聘时,对爬虫也是有要求的。
我们使用Python开发爬虫,Python最强大的地方不在于语言本身而是其庞大而活跃的开发者社区和上亿量级的第三方工具包。通过这些工具包我们可以快速的实现一个又一个的功能而不用我们自己去造轮子,掌握的工具包越多,我们在编写爬虫程序的时候也就越方便。另外,爬虫的工作目标是“互联网”,所以HTTP通信和HTML、CSS、JS这些技能在编写爬虫程序的时候都会用的到。不过不用担心,即使你对这些技术不太了解,在学习了本专栏之后也能够轻松的将这些知识运用到我们的爬虫程序中去。
作为开发人员,代码是最好的老师,在实践中学习,直接靠代码说话,是我们程序员的学习方式,所以,在设计这个专栏的时候我从众多素材中选出了几种具有代表性的课题,我们一起开发几种不同类型的爬虫,实际生产中,我们所需要的数据一般也逃不过这样的页面结构:
新闻供稿专用爬虫——爬取RSS订阅数据
网易新闻爬虫——泛爬网技术
网易爬虫优化——大规模数据处理技术
豆瓣读书爬虫——测试驱动设计与高级反爬技术实践
蘑菇街采集——处理深度继承javascript网站
慢速爬虫的应用举例——知乎爬虫
说到这里,大家还在等什么呢?现在就开始学习爬虫吧,玩爬虫,用爬虫,大家加油啊。