大牛说 | 从爬虫框架scrapy入手学Python

Posted 教学好助手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大牛说 | 从爬虫框架scrapy入手学Python相关的知识,希望对你有一定的参考价值。

【大牛说】


码大牛之前自学过python,不过那时候的自己只会看语法,结果因为没有入手点和能动手的项目,没几天就把背书一样记下来的东西忘记光了,所以说从爬虫入手学python真的是一个不错的选择,比起单纯去看python教程要好,当然基础语法你要先过一遍,再以项目为目标去学习才得以深入。

大牛说 | 从爬虫框架scrapy入手学Python

码大牛推荐scrapy框架,scrapy是用Python写的一个爬虫框架,当然如果只是写一些简单爬虫,python自己就有做爬虫的库,只不过scrapy更加流水线化,各部分分工更加清晰。

下面就从一下五个方面来展开Python爬虫框架scrapy的学习小结: 

目录

爬虫是怎么样获取信息的? 
爬虫可以爬取哪些内容? 
Python做爬虫究竟有什么优势? 
推荐一个python的爬虫框架—— scrapy 
scrapy数据处理流程


一、爬虫是怎么样获取信息的? 

分析一个人从网页中获取信息的行为,大致可以分为这几步:

大牛说 | 从爬虫框架scrapy入手学Python

如果把互联网比喻成一个蜘蛛网,那么爬虫就是爬来爬去的蜘蛛,爬虫在实现一个信息采集过程,无非就是上面的几个基础步骤,但是却实现了一个强大的采集过程。比如码大牛之前发起的期刊论文活动,其中所有的期刊和论文都是用爬虫爬取的,满满的都是知识,您也可以尝试一下用爬虫来抓取喜欢的信息!

一个页面中有许许多多的链接指向别的页面。可以把页面抽象成节点,链接抽象成指向别的节点的边,构成一个图。爬虫所做的就是从一个或多个节点出发,抓取页面内容分析出指向别的节点的边,从而进行遍历。

抓取到的页面的内容可以派许多用处,比如搜索引擎将爬虫爬取到的页面进行过滤之后,对网页的内容做分词处理,再做倒排索引。亦或是你对某个网站很感兴趣,从网站的主页开始一层层往下爬取,将抓取到的页面中感兴趣的内容进行收集等。

当然作为一个有道德的爬虫还需要遵守robots协议,因为有的页面是不希望被爬取的。

二、爬虫可以爬取哪些内容?

1. 分析网站用户,预测美女

爬了某网站12万用户的头像,把长得像的头像放在一起。然后搜集了知友们的点击,预测出来这是你们(平均)最喜欢的人长的样子。然后根据点击数据训练出来了一个带逛机器人,可以自动识别美女。

爬虫技术可以抓取到淘宝天猫京东订单页的数据,不过你需要具备特别的抓取技巧,这其中,最难的是如何绕过或者说击败淘宝和京东的安全策略以及反爬虫策略!而且淘宝和京东貌似迭代很快,三五天就一个新版本。需要持续维护这个爬虫。总之,只要你的爬虫够人性化就可以。没有抓不到的数据,只有不努力的爬虫,不过需要注意的是,淘宝京东这种都是有专门的反爬虫部门的。

大牛说 | 从爬虫框架scrapy入手学Python
 

2. 利用爬虫技术抓取列表信息

除此之外,还有房屋中介成交信息,包括价格、房屋面积、时间、地段等,爬虫还可能获取商业银行的网络舆情监测、客户全景画像、竞争对手分析、行业垂直搜索等等……

三、用Python做爬虫究竟有什么优势?

整体来讲,Python在处理上面的事情的时候有很多库,而且语法简洁,代码风骚,开发者的注意点可以集中在自己要做的事情上。
1. 抓取简单
Python默认可以使用htmlParser来解析HTML,如果你觉得用着不爽(确实用着不爽),可以有很多第三方库来优雅的做这些事情(lxml / BeautifulSoup / ...),甚至可以通过一些库(selenium等)来直接使用浏览器。你可以直接使用类似 body.div.a['href'] 这样简单到爆的语法取自己需要的内容。

2. 效率高
写爬虫来讲,Python相对于其它语言的优势在于有足够简介的语法和足够多的库支持,开发效率很高,而且运行效率方面,网络IO的时间已经大大冲淡了Python的效率问题。
爬虫的效率问题基本不在解析信息的速度上,网络IO的时间其实才是大头。比如你请求网页花了500ms,相应的你的解析速度是1ms还是10ms已经不重要了。用Python可以1个人做5个人的事情,只是多用10倍的机器,多么划算。

如果非要总结几个点,可以归纳为以下4个: 

(1)快速开发——(唯一能和python比开发效率的语言只有rudy)语言简洁,没那么多技巧,所以读起来很清楚容易。
(2)跨平台——由于python的开源,他比java更能体现"一次编写到处运行"
(3)解释性—— 无须编译,直接运行/调试代码
(4)构架选择太多——GUI构架方面,主要的构架就有 wxPython, tkInter, PyGtk, PyQt 。

大牛说 | 从爬虫框架scrapy入手学Python

四、推荐一个python爬虫框架 scrapy

 scrapy是一款不错的分布式爬虫框架,特点在于

(1)抓取频率控制,最好是多个域名抓取任务交叉进行,不至于把人家抓死了
(2)页面链接提取建议自己重写,scrapy内置的效率略低
(3)scrapy有内存泄露问题,这个不是很好解决 

五、 scrapy数据处理流程

下图显示了Scrapy的大体架构,其中包含了它的主要组件及系统的数据处理流程。首先从初始URL开始,Scheduler会将其交给Downloader进行下载,下载之后会交给Spider进行分析,Spider分析出来的结果有两种:一种是需要进一步抓取的链接,例如之前分析的“下一页”的链接,这些东西会被传回Scheduler;另一种是需要保存的数据,它们则被送到Item Pipeline那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。


Scrapy的整个数据处理流程由Scrapy引擎进行控制,其主要的运行方式为
(1)引擎打开一个域名,时蜘蛛处理这个域名,并让蜘蛛获取第一个爬取的URL。
(2)引擎从蜘蛛那获取第一个需要爬取的URL,然后作为请求在调度中进行调度。引擎从调度那获取接下来进行爬取的页面。
(3)调度将下一个爬取的URL返回给引擎,引擎将他们通过下载中间件发送到下载器。
(4) 当网页被下载器下载完成以后,响应内容通过下载中间件被发送到引擎。
(5)引擎收到下载器的响应并将它通过蜘蛛中间件发送到蜘蛛进行处理。
(6)蜘蛛处理响应并返回爬取到的项目,然后给引擎发送新的请求。
(7)引擎将抓取到的项目项目管道,并向调度发送请求。
(8)系统重复第二部后面的操作,直到调度中没有请求,然后断开引擎与域之间的联系。

 

参考材料:JasonDing 《学习Scrapy入门》


阅读更多




教学好助手(boxuegu)

以上是关于大牛说 | 从爬虫框架scrapy入手学Python的主要内容,如果未能解决你的问题,请参考以下文章

scrapy-redis 分布式学习记录

小白学 Python 爬虫(40):爬虫框架 Scrapy 入门基础对接 Selenium 实战

小白学 Python 爬虫(37):爬虫框架 Scrapy 入门基础 Spider Middleware

Python分布式爬虫必学框架Scrapy打造搜索引擎 ??

怎么在32位windows系统上搭建爬虫框架scrapy?

Python分布式爬虫必学框架Scrapy打造搜索引擎