Python之Scrapy框架的安装和使用

Scrapy框架是目前Python中最受欢迎的爬虫框架之一,那么我们今天就来具体了解一下Scrapy框架

什么是Scrapy框架?

     Scrapy是一个快速、高层次、轻量级的屏幕抓取和web抓取的python爬虫框架

Scrapy的用途:

     Scrapy用途非常广泛,主要用于抓取特定web站点的信息并从中提取特定结构的数据,除此之外,还可用于数据挖掘、监测、自动化测试、信息处理和历史片段(历史记录)打包等

了解完Scrapy框架后,我们就来看看怎么安装和使用吧

 

安装Scrapy

安装方法有两种:

1.  如果你电脑上有Anaconda的话,可以使用这种方法
windows+r  >>> cmd >>> conda install scrapy >>> 回车

2.第二种方法使用pip安装,不过你需要先下载Twisted插件

下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

(1)点击下载地址,进入后按  ctrl+f ,搜索twisted,然后下载对应版本

    cp27:表示python2.7版本    cp36:表示python3.6版本

    win32:表示Windows32位操作系统

(2)下载完成后进入终端,输入pip install Twisted-18.7.0-cp36-cp36m-win32.whl

Twisted-18.7.0-cp36-cp36m-win32.whl:文件名(你下载哪个文件就输入哪个文件的文件名,要输入全部路径)

安装完成后再输入pip install scrapy,回车

 

检测scrapy安装是否成功:在终端输入scrapy,出现以下内容就代表安装成功

 

 

Scrapy用法

安装完成后,就来看看如何使用scrapy框架吧

需要注意的是:scrapy的所有命令都是在windows的终端里完成的

 

1.Scrapy可以执行的命令

在终端中输入 scrapy,可以查看所有可执行的命令,现在我们来具体看一下这些命令

bench:性能测试

fetch:读取源代码

genspider:生成爬虫文件

runspider:运行爬虫文件

settings:爬虫设置

shell:终端操作

startproject:创建项目

version:查看版本

以上这些命令只要我们安装scrapy就可以执行

 

但是,以下几种命令需要我们创建具体的py文件之后才能执行,如何创建py文件请参考下文

check:检查代码是否出错

crawl:运行一个爬虫

edit:编辑爬虫

list:列出有效的爬虫

parse:解析url并打印出结果

 

 

2.创建一个scrapy框架,这是所有操作的前提

(1)在编译器(这里以PyCharm为例)里创建一个文件,文件名就命名为Scrapy吧

(2)创建scrapy框架之前,首先要确保把框架创建在我们刚刚新建的文件夹Scrapy中

打开计算机终端:输入cd  后面跟一个空格  然后把你新建的Scrapy文件直接拖拽进终端里

                          cd:change directory  修改位置到指定文件夹中

第一行是命令,第二行是结果

(3)创建scrapy框架,在终端中输入:scrapy startproject Demo 

    scrapy startproject:表示要执行创建一个新项目的命令  Demo:项目名,可以自定义命名

    命令执行完成后,我们回到PyCharm中,可以看到Scrapy文件自动出现了许多新的文件

这里来解释一下各个文件的作用:

items.py:定义爬虫程序的数据模型

middlewares.py:定义数据模型中的中间件

pipelines.py:管道文件,负责对爬虫返回数据的处理

settings.py:爬虫程序设置,主要是一些优先级设置,优先级越高,值越小

scrapy.cfg:内容为scrapy的基础配置

 

这里我们要改一下settings.py里的内容:

(1)打开文件,找到代码的第22行,把 ROBOTSTXT_OBEY=True  改为  False,这行代码表示是否遵循爬虫协议,如果是Ture的可能有些内容无法爬取

(2)将第67到69行代码解注释,并把300改为1,这是优先级设置

 

至此,一个scrapy框架已经初步创建成功了。

现在,我们来具体了解一下scrapy框架是如何构成和如何运行的。

 

Scrapy框架图  绿色是数据流向

(注:以下图片来源于网络)

 

 

Scrapy Engine:引擎,处理整个框架的数据流

Scheduler:调度器,接收引擎发过来的请求,将其排至队列中,当引擎再次请求时返回

Downloader:下载器,下载所有引擎发送的请求,并将获取的源代码返回给引擎,之后由引擎交给爬虫处理

Spiders:爬虫,接收并处理所有引擎发送过来的源代码,从中分析并提取item字段所需要的数据,并将需要跟进的url提交给引擎,再次进入调度器

Item Pipeline:管道,负责处理从爬虫中获取的Item,并进行后期处理

Downloader Middlewares:下载中间件,可以理解为自定义扩展下载功能的组件

Spider Middlewares:Spider中间件,自定义扩展和操作引擎与爬虫之间通信的功能组件

 

Scrapy数据处理流程:

1. 当需要打开一个域名时,爬虫开始获取第一个url,并返回给引擎

2.引擎把url作为一个请求交给调度器

3.引擎再次对调度器发出请求,并接收上一次让调度器处理的请求

4.引擎将请求交给下载器

5.下载器下载完成后,作为响应返回给引擎

6.引擎把响应交给爬虫,爬虫开始进一步处理,处理完成后有两个数据,一个是需要跟进的url,另一个是获取到的item数据,然后把结果返回给引擎

7.引擎把需要跟进的url给调度器,把获取的item数据给管道

8.然后从第2步开始循环,知道获取信息完毕。只有调度器中没有任何请求时,程序才会停止

 

3.Scrapy的具体操作

(1)我们要在spiders文件夹中创建爬虫程序,但是现在的当前文件是Scrapy,所以我们要先改变当前文件位置至spiders中

方法同上,在终端中输入:cd 后面加一个空格 然后把spiders文件拖过去回车即可

 

(2)开始创建爬虫文件,这里的域名以百度为例

在终端中输入:scrapy genspider baidu_spider baidu.com      其中:baidu_spider 是文件名,可以自定义,但是不能与项目名一样

回车后会在spiders文件夹下创建一个baidu_spider.py文件,之后所有的操作都会在这个文件中的def parse中执行

 

baidu_spider.py文件内容:

当创建py文件成功后,我们再次输入命令:scrapy 会发现多了check,crawl,edit,list,parse这5个方法,具体作用请参考上文

 

(3)补全url并打印结果,因为scrapy会自动爬虫,所以我们只需要输出结果就行了

在终端中输入:scrapy crawl baidu_spider

如果成功会出现目标url的网页源码

 

 

 

今天关于Scrapy的讲解就到这里了,关于如何用Scrapy获取具体的数据之后我会继续讲解。

  • 60
    点赞
  • 197
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值