栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

scrapy项目实战(一)--基础知识学习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

scrapy项目实战(一)--基础知识学习

Scrapy框架学习 一、什么是scrapy

​ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取

Scrapy使用了Twisted[‘twistid’]异步网络框架,可以加快我们的下载速度

补充:异步和非阻塞的区别

异步:调用在发出之后,这个调用就直接返回,不管有无结果

非阻塞:关注的是程序在等待调用结果(消息、返回值)时的状态,指在不能立刻得到结果之前,该调用不会阻塞当前的线程

二、scrapy的工作流程


使用框架:一、帮助提升速率,效率。二、减少代码量,简介方便

三、scrapy入门 1.创建一个scrapy

打开cmd界面中输入:scrapy startproject mySpider

mySpider是项目名

此时是在c盘中打开的项目

如果将文件夹移动到d盘,或者其他地方,在cmd中则需要进行一系列命令操作。

此时我们的文件夹时放在了D:python练习中,因此:

补充:打开cmd是默认是在c盘内操作,而我们将此项目放在d盘中时,则要先c盘转化为d盘:

在cmd界面中输入 cd python练习 :

会进入到python练习文件夹中

在输入 cd mySpider :

便会进入到了mySpider文件中,

创建完成后,在pycharm编译器中会得到:

会得到两个内容:一个是mySpider文件夹,另一个是scrapy.cfg

scrapy.cfg :是项目的配置文件

items.py :可以预先在其中定义我们要爬取哪些东西 (爬虫)

pipelines.py :管道,进行数据的处理、储存

settings.py :整个项目的配置

2.生成一个爬虫

在cmd界面中,输入:scrapy genspider itcast itcast.cn

genspider 生成一个爬虫或者新建一个爬虫

itcast 为文件名字

itcast.cn 为允许爬虫的范围

项目建成后对应会在mySPider文件下的spiders文件中

新建立一个python项目:

在新建项目中,通过注释了解,可以进行项目书写

请求相应网站,通过xpath挖掘数据,并输出数据

在cmd界面中,输入:scrapy crawl itcast

便可以运行爬虫,爬取内容 如图:

通过编写代码后,得到数据,将数据传给管道,进行数据处理、储存

3.提取数据

extract() 返回一个包含有字符串数据的列表

extract_first() 返回列表中的第一个字符串

注意:spider中的parse方法名不能修改

4.保存数据、处理数据

yield item :将item 传给管道pipelines.py

然后输出item,但是此时输出的会是空,我们在scrapy中不能这样直接输出,应该在setting中先开启后才能使用

也可以将数据保存成各种形式

scrapy crawl fang -o fang.json 这样就是保存为json格式了

scrapy crawl fang -o fang.csv 保存为csv格式

四、使用pipline

​ pipline实际上是有多个的,在我们做爬虫项目时,往往不会只需要我们爬取一个网站的内容,所以一个爬虫是不够的,因此我们需要建立多个爬虫。

建立了多个爬虫

那pipline如何定义多个呢?

可以直接在一个通道中进行识别,使用条件判断语句

另一种方式:

可以直接建立多个pipline管道使用。

为什么我们需要多个pipline:

1.可能会有多个spider,不同的pipline处理不同的item的内容

2.一个spider的内容可能要做不同的操作,比如存入不同的数据库中

注意:

1、pipline的权重越小优先级越高

2、pipline中process_item方法名不能修改其他的名称

五、实例演示

以汽车之家为目标,爬取宝马车系的车名和所对应价格

1.准备阶段

建立scrapy项目

打开cmd终端,将路径转移到相对应的路径下

输入:scrapy startproject scrapy_carhome

这样一个项目就建立起来了

然后转移到项目路径下,在新建一个爬虫程序

输入:scrapy genspider car “域名”

这样便成功完成了准备阶段

2.提取数据

在新建的car.py程序中进行数据提取,通过xpath方法提取我们所需要的数据

其中需要注意的点在于,我们使用response爬取出来的数据类型是selector对象

所以我们需要用到extract方法,这个方法的作用是提取selector对象中的data属性值

六、scrapy shell 1.什么是scrapy shell?

Scrapy终端,是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码。其本意是 用来测试提取
数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码。
该终端是用来测试XPath或CSS表达式,查看他们的工作方式及从爬取的网页中提取的数据。在编写您的spider时, 该
终端提供了交互性测试您的表达式代码的功能,免去了每次修改后运行spider的麻烦。
一-旦熟悉了Scrapy终端后,您会发现其在开发和调试spider时发挥的巨大作用。

2.使用scrapy shell

我们直接在cmd终端就可以使用

直接输入:scrapy shell 域名

我们输入的是百度的网址,然后能够得到以下内容

从图中我们就可以得到网站的response,如果需要网站中的一些东西,我们可以直接进行获取

这里我输入了:response.url

获取了百度的网址

同时还可以有很多的功能

response.body 网页的主体

response.text 网页的文本内容

response.status 网页的状态

当然也可以提取我们所需要的数据

输入:response.xpath("//input[@id=“su”]/@value")

也能够得到我们需要的数据

使用scrapy shell 本身没什么用处,主要是用来进行调试,不用每次在测试时要去运行程序,对于老练的程序员来说没什么用处,不过可以用来给新手练手,因为它能够更简单,也更直接的调试scrapy程序

七、日志信息

大多数时候我们在执行scrapy程序中都会看到很多我们不想看到,并且也看不懂的东西,那些其实就是日志信息

当然我们也可以设置让它变得看不见

这里就讲到了日志信息和日志等级

日志等级分为:

CRITICAL :严重错误

ERROR :一般错误

WARNING :警告

INFO : 一般信息

DEBUG :调试信息

默认的日志等级是DEBUG,所以出现了DEBUG及以上等级的都会显示出来

所以我们可以再settings中修改等级,如果我们不想看到太多,可以改成一般错误,或者警告

输入:LOG_LEVEL = 'ERROR’

这样error等级以下的就不会显示出来了,但是我们这样会使得当发生错误时无法知道到底错在哪

所以我们使用更有效的一种方法

我们可以建立日志文件:

输入:LOG_FILE = 'log.log’

将程序中所有日志信息新建一个文件保存,程序中不在显示,注意的是文件的后缀一定是.log

八、scrapy的post请求

post请求是需要参数的,所有parse和start_urls是无效的

我们需要使用start_requests()方法

自行创建url,data

然后使用FormRuquest()方法

返回数据后,回调函数自行创建

在新的回调函数中,我们就可以进行网页操作,因为已经得到了post请求网站的信息了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/503859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号