Python语言爬虫实战-使用Scrapy框架爬取土巴兔(一)
小标 2019-01-02 来源 : 阅读 971 评论 0

摘要:本文主要向大家介绍了Python语言爬虫实战-使用Scrapy框架爬取土巴兔(一),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言爬虫实战-使用Scrapy框架爬取土巴兔(一),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

该篇文章主要讲Scrapy架构、工作流程、优点及开发环境的搭建,接下来我们进入正题。

一.初识Scrapy

Scrapy架构图:


Scrapy架构图


通过清晰的架构图我们可以了解到Scrapy运作的流程。

1.Scrapy的五大模块:

引擎(Scrapy Engine):Scrapy使用Twisted来作为框架的核心,Twisted是一个基于事件驱动的网络引擎框架。所以引擎主要是用来处理整个系统的数据流,触发各个事件。

调度器(Scheduler):调度器接受引擎传来的数据,维护需要爬取的网页URL队列,并通过规定的调度机制将URL创建为下载请求。

管道(Item Pipeline):将爬取到的内容转换为实体对象,并对实体对象做有效性验证、持久化等等自定义的操作。

下载器(Downloader):主要是进行网页的http请求及响应,负责产生数据并返回数据。

爬虫(Spiders):在爬虫中,定义爬取URL的规则和网页信息的提取规则。

2.Scrapy的三个中间件起到串联各个模块的作用:

下载器中间件(Downloader Middlewares):位于Scrapy引擎和下载器之间的中间件,在Scrapy引擎和下载器中间负责传递下载内容的请求和数据。

调度中间件(Scheduler Middewares):位于Scrapy引擎和调度之间的中间件,Scrapy引擎和调度器之间负责传递调度的请求和响应。

爬虫中间件(Spider Middlewares):位于Scrapy引擎和爬虫之间的框架,主要工作是处理爬虫的响应输入和请求输出。

3.Scrapy的工作流程:

引擎打开一个网站,找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。

引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)中创建request来进行调度。

引擎向调度器请求下一个要爬取的URL。

调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)。

一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。

引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。

Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。

引擎将(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器。

(从第二步)重复直到调度器中没有更多地request,引擎关闭该网站。

4.Scrapy的优点:

我们为什么要使用Scrapy,而不使用其他爬虫框架,除了成熟稳定之外,还有很多其他优势。

使用可读性较好的xpath代替正则处理html解析

支持shell方便调试

高扩展,低耦合,方便定制功能

编码自动检测以及健壮的编码支持

有强大的统计功能和log系统

支持多URL异步请求

二.开发环境的搭建

1.安装python环境

目前Scrapy同时支持python2.7版本和python3.3以上,所以可以根据自己需要选择不同的Python版本。本文针对的开发环境使用的是python3.5,如果你是初学者建议使用python3开始学习,不用考虑python的许多历史包袱。

Python各个版本下载地址:https://www.python.org/downloads

2.安装Scrapy

由于官方文档有Scrapy安装教程,这里不做详细说明,安装方法可以参考官方文档。
这里说下Windows下可能会遇到的问题,因为Scrapy依赖部分第三方框架,所以在安装的Scrapy的同时也会一起安装相关的第三方框架。部分第三方框架可能会出现安装失败的情况,如:

Twisted在Windows环境下安装失败,需要手动下载Twisted在下的Windows安装包//www.lfd.uci.edu/~gohlke/pythonlibs/#twisted。根据自己的windows和python版本选择对应下载安装包。


如果下载的安装包是"Twisted-17.1.0-cp35-cp35m-win_amd64.whl",则调用命令

pip install Twisted-17.1.0-cp35-cp35m-win_amd64.whl

Lxml在Windows环境下安装失败,与Twisted情况相似。需要手动下载安装包。//www.lfd.uci.edu/~gohlke/pythonlibs/#lxml。


如果下载的安装包是"lxml‑3.7.3‑cp35‑cp35m‑win_amd64.whl",则调用命令

pip install lxml‑3.7.3‑cp35‑cp35m‑win_amd64.whl

3.安装MongoDB

这里使用MongoDB来保存爬取到的网页上的信息,如文章的标题、类别、图片保存路径等等。
MongoDB安装相对简单。先下载安装包https://www.mongodb.com/download-center,如果安装过程中有疑问可以参考官方文档。Windows下也可以参考这篇文章MongoDB下载与安装,作者讲的很详细。
MongoDB安装完后还需要安装第三方库pymongo,我们需要pymongo在python代码中操作MongoDB。
安装命令:

pip install pymongo

4.安装Redis

Redis是一个数据结构为key-value键值对的存储系统。在爬虫中使用Redis主要是为了存取缓存,记录自动更新Http代理的时间,对已经爬取的网页URL进行过滤等等。
Redis的安装教程和下载地址在官网链接中https://redis.io/download。
Redis还目前没有Windows版本,所以如果要安装Windows版本,只能使用Microsoft Open Tech group 提供的Redis版本。Github中有下载地址和安装教程https://github.com/ServiceStack/redis-windows。
接着安装第三方库redis
安装命令:

pip install redis

5.安装第三方库

pillow:处理对图片的裁剪、保存

pip install pillow

requests:基于 urllib,采用Apache2 Licensed开源协议的HTTP库

pip install requests

schedule:使用schedule进行定时任务管理

pip install schedule

6.安装IDE

推荐使用PyCharm,可以说是目前做python开发最好的IDE,PyCharm社区版提供的功能就已经足够强大了。

最后

现在我们对Scrapy已经有了基本的认识,开发环境搭建也已经完成,接下来就开始进行代码编写。Python爬虫实战-使用Scrapy框架爬取土巴兔(二)

附:

详细的项目工程在Github中,如果觉得还不错的话记得Star哦。

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程