scrapy框架的安装与基本使用,scrapy分页数据的抓取

一. scrapy框架简介

scrapy是一个专门用python实现爬取网页数据,提取结构性数据的框架,它相对requests请求库,selenium等抓取方式相比,scrapy可以更加高效快速的抓取到数据,尽管scrapy是设计来web网络抓取的,但是它也可以用来访问API来提取数据

二.scrapy的安装

你首先要检查一下自己的python解释器是不是3.9版本或者3.9之后的版本,因为在windows操作系统下面去安装时,就是需要3.9版本后的解释器才有可能会安装成功,否则就会报错,但如果你的`电脑时mac或者Linux版本的话就可以不用考虑python解释器的版本,因为这个scrapy框架的底层使用的时twisted异步包

检查好解释器版本后就直接在cmd终端输入 pip install scrapy
在这里插入图片描述

如果出现了报错,就使用pip镜像源进行加速安装

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple

如果报了一个关于twisted的错误就进入以下网页进行安装一个twisted
https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
在这里插入图片描述
根据自己电脑和python对应的版本进行twisted的下载

如果还是不能正常安装,就使用下面的最终方案

下载一个anacode软件包
anacode的安装教程以及虚拟环境的配置 https://blog.csdn.net/qq_45344586/article/details/124028689
在这里插入图片描述

在cmd终端输入scrapy -v命令如果可以看到版本号说明已经安装成功了

三.scrapy的基本使用

创建一个scrapy项目

输入 scrapy startproject 项目名
在这里插入图片描述

创建项目后,会有这些文件,里面每个文件都会有自己在scrapy框架中的功能

在这里插入图片描述

test_01是项目的文件名

spiders下面的__init__.py是一个初始化文件,此外spiders文件夹下面会存放我们爬虫过程中创建的所有爬虫文件

scrapy.cfg是项目文件夹的一个配置选项,没有太大的用处,基本可以忽略

item.py顾名思义可以看出它是一个创建数据结构的文件,就是创建你爬取数据时数据的字段

middlewares.py它是一个中间件,主要功能是做IP代理池,拦截响应等等

pipelines.py 它是一个管道文件,主要用来对抓取下来的数据进行持久化存储,并且在里面可以开辟多个管道进行数据下载,但管道会讲究一个优先级队列,值越小,优先就越高

settings.py 它可以用来开启和关闭管道文件,下载中间件,还有一些配置选项,比如日志文件,robots协议,请求头等等

创建一个爬虫文件
输入scrapy genspider + 爬虫文件名 + url的域名
在这里插入图片描述

这就是我们创建的爬虫文件

在这里插入图片描述

name 爬虫名称,主要是运行爬虫项目的使用

allowed_domains 这个是允许抓取的域名,就是如果你只想抓取某一个域名的网站,就可以使用这个去过滤掉那些不是你想要抓取的域名

start_urls 是scrapy发起请求的网址,他里面可以是一个url也可以是多个,当然我们大部分都是只写一个

parse 函数里面是scrapy向url发起请求获取到的响应结果的回调函数,就是在里面进行一系列的数据抓取过程

四. scrapy架构流程图

请添加图片描述

五.汽车之家案例抓取

首先我们需要创建一个scrapy项目
在这里插入图片描述

找到页面链接

在这里插入图片描述
将网页链接填入scrapy的url_start处,并进行检测scrapy是否运行成功

为了可以直接右击运行scrapy项目文件,可以直接创建这个文件进行运行,当然你也可以直接在python的终端输入scrapy crawl + 爬虫文件名称 就可以了

在这里插入图片描述

运行之前需要把settings.py中的robots协议改成False

在这里插入图片描述

启动项目后如果可以看到打印输出"-----------------------------"说明启动成功

在这里插入图片描述

在这里插入图片描述

从这里可以看出这个scrapy项目已经成功启动了,但是有一些日志级别的报错,如果想让日志级别的报错不显示可以在settings.py配置选项文件中去设置日志级别
在这里插入图片描述

这个配置选项就是只显示有关警告的日志级别,当然你也可以将这些日志级别的报错创建一个文件保存下来(在配置选项中输入LOG_FILE=“file.log”)

在这里插入图片描述

在spiders里的爬虫文件做好数据解析

在这里插入图片描述

去item.py文件中创建数据结构

在这里插入图片描述

将创建的数结构的类导入到爬虫文件中,并且提交要保存的数据

在这里插入图片描述

在settings.py文件中打开我们的管道,进行保存数据

在这里插入图片描述

打开pipelines.py管道文件进行一个数据输出,检验数据是否已经存储了

在这里插入图片描述

六extract()和extract_first()区别和用法

extract()就是获取selector对象中的data属性值,因为scrapy中用到的xpath解析库有点结合了我们的parsel解析库的selector对象,但是parsel是用get()和getall(),这里的extract()就相当于parsel中的getall()方法

extract_first()就是获取selector()对象列表中的第一个data属性值,相当于parsel解析库中的get()方法

七.当当网数据抓取(scrapy的分页抓案例)

在这里插入图片描述

抓取到这个图片链接,你可以看到除了第一张图片其他的都是一些none的png,这种情况就是存在懒加载(我们可以看到第二张图片有一个data-original的属性里面就是图片懒加载的链接)

在这里插入图片描述

所以要用到分支语句进行一个判断从而获取图片链接

在这里插入图片描述

在item.py创建数据结构

在这里插入图片描述

把item的class类导入到爬虫文件中,把抓取的数据提交到item中去

在这里插入图片描述
在这里插入图片描述

在settings.py中开启管道文件

在这里插入图片描述

在pipelines.py文件中保存数据

在这里插入图片描述

可能大家会疑惑我为什么要这样分成三个函数去写,而不是直接使用with open(‘library.json’,‘a’,encoding=‘utf-8’),因为我们spider文件中的数据是一条一条提交的,如果使用with open 就会每次都会打开关闭文件,这样会非常耗费性能,所以就专门创建一个函数,只打开和关闭一次json文件

分页操作

首先观察每一页url之间的关系然后进行分页(可以发现就一个pg1,pg2,pg3的规律)
在这里插入图片描述
在这里插入图片描述

几千条数据几秒钟就可以下载完成,体现出scrapy快速高效的特点

在这里插入图片描述

八.总结

本章主要是讲解scrapy的安装与基本使用,讲解scrapy的实现基本流程,以及如何使用scrapy进行分页抓取数据

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 使用Scrapy框架可以轻松地抓取数据并将其保存为CSV格式。以下是具体步骤: 1. 创建一个Scrapy项目并定义要抓取的网站。 2. 编写Spider,定义如何抓取数据。 3. 在Item中定义要保存的数据字段。 4. 编写Pipeline,将数据保存为CSV格式。 5. 在settings.py中启用Pipeline。 6. 运行Scrapy爬虫数据将被抓取并保存为CSV格式。 总之,使用Scrapy框架抓取数据并保存为CSV格式非常简单,只需按照上述步骤操作即可。 ### 回答2: Scrapy是一个开源的Python Web爬虫框架,可以用于抓取互联网上的数据,可以自动化地将其整理、处理和保存为所需的格式。其中,CSV(comma-separated values)是一种常见的数据格式,用于在不同的程序之间共享、导入和导出数据。下面是使用Scrapy框架抓取数据并保存为CSV格式的步骤: 1. 安装 Scrapy:可以通过pip安装 ```python pip install scrapy ``` 2. 创建 Scrapy 项目:在命令行下输入以下命令 ```python scrapy startproject projectname ``` 其中,projectname是你的项目名称。 3. 创建 Scrapy Spider:在项目中创建一个spider以定义从哪里收集数据和如何处理数据。在命令行下输入以下命令: ```python scrapy genspider spidername domain.com ``` 其中,spidername是你的spider名称,domain.com是你要爬取的网站地址。 4. 修改 Spider,添加Spider代码:打开你的spider,并为其添加必要的代码。Scrapy的spider使用XPath或CSS选择器来提取需要的数据。 ```python import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://www.example.com'] def parse(self, response): data = response.xpath('//div[@class="myclass"]') for item in data: yield { 'title': item.xpath('a/text()').extract_first(), 'link': item.xpath('a/@href').extract_first() } ``` 在这个例子中,我们在网页中找到所有的div,然后提取每个div中的标题和链接 5. 存储数据:在Scrapy的settings.py文件中,您可以将文件名和数据保存路径设置为.csv文件。默认情况下,Scrapy会以.json格式存储数据。为了更改默认设置,只需将以下字段添加到settings.py文件: ```python FEED_FORMAT = 'csv' FEED_URI = 'file:///path/to/file.csv' ``` 在上面的示例中,我们将数据保存到名为file.csv的文件中。只需替换实际的路径,即可将数据保存到所需的位置。 6. 运行Spider:在命令行中运行以下命令,运行spider并将数据保存为csv格式 ```python scrapy crawl spidername -o file.csv ``` 必须将示例中的spidername替换为实际的spider名称。-o标志是用于指定要将数据保存到的文件名。 Scrapy框架使数据抓取变得更容易,它包含许多内置的功能,例如Cookies管理、重定向管理、HTTP缓存等。 Scrapy的另一个优点是可以自定义处理程序,例如可以通过将数据保存为CSV格式,将数据提供给其他程序使用。 ### 回答3: Scrapy是一个开源的Python框架,用于从网站上抓取数据并进行爬取。 Scrapy可以跨越多个页面爬取数据,还可以在爬取过程中对数据进行处理和过滤。 使用Scrapy框架抓取数据并保存为csv格式,需要以下步骤: 1、安装Scrapy框架和相关依赖包,如lxml、twisted等。 2、创建一个Scrapy项目。可以使用命令scrapy startproject projectname来创建一个Scrapy项目,其中projectname为项目的名称。 3、编写爬虫代码。在Scrapy项目中,可以通过编写一个爬虫代码来定义爬取的规则,包括如何访问网站、如何获取页面、如何解析页面以及如何存储数据等。 4、设置ITEM_PIPELINES。 Scrapy提供了一种称为ITEM_PIPELINES的机制,可以将获取到的数据在不同的程序中进行处理和过滤。可以通过设置ITEM_PIPELINES来指定将数据存储为csv格式。 5、保存数据为csv格式。在Scrapy项目中,可以使用Python内置的csv库将数据存储为csv格式。编写一个csv导出器,将爬取的数据保存为csv格式文件。 通过以上步骤,就可以使用Scrapy框架抓取数据并将其保存为csv格式了。Scrapy不仅可以抓取纯文本数据,还可以抓取图片、视频等多媒体数据。如果想要将数据存储到MySQL或MongoDB数据库中,可以使用Scrapy提供的数据库管理功能,直接将数据写入数据库进行存储。 Scrapy框架的优点是速度快、可扩展性强、对异步支持好等,它在数据抓取方面有很大的优势。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Transcend oneself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值