51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1374|回复: 1
打印 上一主题 下一主题

Python之Scrapy框架的安装和使用

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-6-11 11:54:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 悠悠小仙仙 于 2019-6-11 14:36 编辑

安装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获取具体的数据之后我会继续讲解。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-18 12:24 , Processed in 0.069717 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表