51Testing软件测试论坛
标题:
Python之Scrapy框架的安装和使用
[打印本页]
作者:
悠悠小仙仙
时间:
2019-6-11 11:54
标题:
Python之Scrapy框架的安装和使用
本帖最后由 悠悠小仙仙 于 2019-6-11 14:36 编辑
安装Scrapy
安装方法有两种:
1. 如果你电脑上有Anaconda的话,可以使用这种方法
windows+r >>> cmd >>> conda install scrapy >>> 回车
[attach]124911[/attach]
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,出现以下内容就代表安装成功
[attach]124910[/attach]
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 修改位置到指定文件夹中
[attach]124909[/attach]
第一行是命令,第二行是结果
(3)创建scrapy框架,在终端中输入:scrapy startproject Demo
scrapy startproject:表示要执行创建一个新项目的命令 Demo:项目名,可以自定义命名
命令执行完成后,我们回到PyCharm中,可以看到Scrapy文件自动出现了许多新的文件
[attach]124908[/attach]
这里来解释一下各个文件的作用:
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框架图 绿色是数据流向
(注:以下图片来源于网络)
[attach]124907[/attach]
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文件拖过去回车即可
[attach]124906[/attach]
(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个方法,具体作用请参考上文
[attach]124910[/attach]
(3)补全url并打印结果,因为scrapy会自动爬虫,所以我们只需要输出结果就行了
[attach]124903[/attach]
在终端中输入:scrapy crawl baidu_spider
如果成功会出现目标url的网页源码
[attach]124902[/attach]
今天关于Scrapy的讲解就到这里了,关于如何用Scrapy获取具体的数据之后我会继续讲解。
作者:
Miss_love
时间:
2020-12-30 16:02
支持
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2