• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
Transcend oneself
帮助1

一. 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进行分页抓取数据

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfigiha
系列文章
更多 icon
同类精品
更多 icon
继续加载