简单上手Scrapy框架

news2024/11/26 13:40:33

创建一个Scrapy框架的爬虫程序

安装Scrapy库,直接通过pycharm搜索Scrapy进行安装即可

在终端执行 scrapy startproject 项目名

        scrapy startproject Learn

       示例

         即可创建名为Learn的Scrapy程序,成功创建项目后,会已项目名称创建一个文件夹,该文件夹下才是真正的程序文件,如图

        项目目录

        

        结构讲解

                spiders:放的是爬虫源文件,需要将爬虫的程序写在该目录下

                items:放的是爬虫生成的item对象,相当于暂时存放所解析后的数据类

                pipelines:管道处理传进来item类的持久化保存操作

                settings.py:放的是项目的配置文件

创建爬虫源文件

        首先需要切换到spiders或项目目录下 cd spider 或者 cd learn

        scrapy genspider 爬虫文件名 指定的url

        示例

        scrapy genspider first www.baidu.com

         参数介绍

        name:爬虫的名称,也是该爬虫的唯一标识

        allowed_domains:允许访问的域名范围,一般都不使用这种方式,因为有一些请求下载的url并不是属于指定的域名

        start_urls:存放需要访问的url地址,scrapy会根据这里面的url发送请求

        函数 parse:存放的是scarpy发送请求后的响应对象,start_urls里面有多少个地址就会执行多少次parse函数就会多少个响应对象

运行项目

        首先在settings.py 中把【ROBOTSTXT_BOEY=False】,因为开启此协议基本上就无法抓取数据

        在settings.py 中设置对应的User-agent

        可以在settings.py 中设置 【LOG_LEVEL="ERROR"】,运行项目时显示错误日志,过滤其他日志

        日志级别从低到高排序:DEBUG、INFO、WARNING、ERROR、CRITICAL,设置的级别能够显示当前级别及以上的信息

        scrapy  crawl 爬虫名字

        示例

        scrapy crawl first

数据解析

可以直接使用response.xpath进行html的结构解析,其返回的也是一个列表,与etree包中的xpath不同是其列表里面装的是selector对象,需要再次进行抽取转换,使用.extract()方法即可转化,如果是列表进行extract,其会将列表中的每个selector对象进行转化

持久化存储数据

        使用管道进行存储

        1.编写items里面的类,定义item的属性

        需要多少个保存的数据,就创建多少个属性

        2.在数据解析时创建实例化对象

        每一次yield都会调用pipelines里面的process_item方法

                 3.编写process_item方法

        4.在settings中开启管道

         把ITEM_PIPELINES的注释给取消,后面数字代表优先级,数字越小,表示优先级越高,就会越先被执行

process_item方法中的return item 会把item传递给下一个优先级的管道类(比当前管道类低一级的pipeitem),通常一个管道类对应一种存储载体

scrapy五大核心件

        引擎、spider、管道、下载器、调度器

        引擎:对于程序的事务处理,根据不同的信息流来执行对应的模块,所有数据流都要经过引擎处理

        spider:封装url对象,解析response,传递item

        调度器:接受url对象后进行封装request请求

        下载器:接受request请求,向网络发送请求,即获取网页数据,返回response

        管道:保存数据,可以使用多种方式进行数据的存储,如文件、数据库等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/551708.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FTP和SSH连接远程终端Ubuntu

安装好ubuntu后是默认没有ssh服务和ftp服务的,我们需要自己解决一下这个问题 SSH 更新软件列表和软件 sudo apt-get update sudo apt-get upgrade安装ssh sudo apt-get install ssh启动ssh服务 sudo /etc/init.d/ssh start修改ssh服务配置文件 sudo vim /etc/…

前端工程化:发布一个属于自己的规范 npm 包

初始化项目 首先在github创建一个仓库,协议选择MIT,gitignore选择Node,添加README.md描述文件。使用git clone将项目克隆到本地。cd 进入目录,使用vscode打开(终端输入code . 命令即可)。 然后创建一个合理…

CentOS-7 安装 MariaDB-10.8

一、安装之前删除已存在的 Mysql/MariaDB 1 查找存在的 MariaDB # 注意大小写 rpm -qa | grep MariaDB # rpm -qa 列出所有被安装的rpm package (-qa:query all) rpm -qa | grep mariadb # grep (缩写来自Globally search a Regular Expre…

C++ 折叠参数包:悄然增强编程效率

前言 欢迎来到💖小K💖的💞C专栏💞,本节将为大家带来折叠参数包的详细讲解,折叠参数包为C模板编程提供了更加灵活和强大的工具,可以提高代码的简洁性和可读性,看完后希望对你有收获 文…

室内外融合定位UWB信标定位方案

大家好,我是北京华星智控公司小智,今天我给大家介绍室内外融合定位系统方案,该方案室外采用北斗卫星定位技术室内采用UWB定位技术从而实现室内外精确定位无缝切换,实现室内外的融合定位。 室内外融合定位系统, 该方案…

Binder相关问题

Binder相关问题 1、Binder是什么?2、Binder有什么优势?3、Binder如何做到一次拷贝的?4、MMAP的原理是什么?5、Binder机制是如何跨进程的?6、为什么Intent不能传递大数据7、AIDL生成Java类细节8、四大组件底层的通信机制…

波奇学Linux:yum和vim

Linux三种安装方式 源代码安装 用户下载->软件源码->源码编译->可执行程序 rpm安装:相当于去官网下载Linux安装包 可能存在依赖项不匹配问题。 yum安装包 用户yum下载->软件安装包->可执行程序 yum是软件包管理器,解决安装源&…

玩客云刷Armbian带docker详细教程(附所有软件)

文章目录 介绍一.准备工作1.硬件准备2.软件准备 二.开始折腾1.烧录系统固件2.刷入系统1.准备镜像2.刷入镜像3.刷入镜像到系统 三.功能介绍1.网页终端2.设备状态3.AriaNg4.qBittorrent5.微力同步6.filebrowser7.Portainer 四.拓展1.添加Alist1.介绍2.安装3.配置3.1查看密码3.2修…

chatgpt赋能Python-pythoncidere

PythonCider:提供最优质的 Python 编程知识 Python 是目前最受欢迎的编程语言之一,特别在数据科学和人工智能方面应用广泛。如果你是一名 Python 开发者或者正在学习 Python 编程,PythonCider 是一个你绝对不能错过的网站。 什么是 PythonC…

JavaScript实战训练小项目 WebAPI

JavaScript实战训练小项目 文章目录 JavaScript实战训练小项目 & WebAPI1. JS操作DOM树1.1 获得HTML控件/元素标签1.2 操纵控件1.2.1 获取属性值1.2.1 修改属性值 1.3 实现一个猜数字的功能 2. JQuery3. 简单计算器4. 聚合搜索5. 表白墙 JavaScript实战训练小项目 & We…

OpenLayers入门教程汇总目录

前言 本篇作为OpenLayers入门教程的目录,用于整理汇总专栏所有文章,方便查找。 入门 Gis开发入门,OpenLayers、Leaflet、Maplibre-gl和Cesiumjs地图引擎介绍以及几种地图服务vms、vmts介绍vue项目集成并使用OpenLayers地图的两种方式 加…

记ABAC的落地实践

为什么使用ABAC 一般提到授权,我们就会想到角色(role)。什么样的用户拥有什么样的角色可以怎么操作什么样的资源,这是我们普遍使用的权限系统的模型。这里的角色实质上是包含了一组用户操作资源的规则集合。一旦角色被创建&#…

【RISC-V】执行环境

裸机程序 操作系统 虚拟化 RISC-V处理器3种模式 机器模式(M模式) 安全执行环境,通常运行SBI固件,为操作系统提供服务。 特权模式(S模式) 运行操作系统内核,为应用程序提供服务。 用户模式(U模式) 运行应用程序。 虚拟化新增特权模式 …

Boundary IoU:Improving Object-Centric Image Segmentation Evaluation总结笔记

Boundary IoU:Improving Object-Centric Image Segmentation Evaluation(边界Iou:改进以对象为中心的图像分割评价) 目录 一、论文出发点 二、论文核心思想 三、相关工作 四、敏感度分析 五、Boundary IoU定义和实验证明 六、应用 七…

【系统移植】uboot 通过 NFS 加载根文件系统(一) —— 网络环境配置

前面试过了SD卡烧录根文件系统,然后借助环境变量 bootargs 来加载SD卡中的根文件系统,但是实际开发需要经常对文件做增删改等操作,所以将根文件系统放在SD上不大合适。 因此,最常用的做法是把根文件系统放在NFS服务端&#xff08…

Spring事务及事务传播机制

一.事务的含义:多个操作封装在一起,要么同时执行成功,一旦有一个操作执行失败,那么全部执行失败。这里给大家举个例子:比如A给B转账50元,而B没有收到这50元,此时A转账B这个操作也需要进行回滚,恢复到A给B没…

HTTP 协议的基本格式

HTTP 什么是HTTP?HTTP是应用层的一个重要协议.它定义了浏览器怎样向服务器请求文件,以及服务器怎样把文件传送给浏览器. 我们打开浏览器,手动输入一个网址:baidu.com.那么此时浏览器就会给百度的服务器发送请求.百度服务器在返回一个html的响应. 那么我们如何学习HTTP协议呢…

【系统移植】uboot 通过 NFS 加载根文件系统(二) —— 修改环境变量 bootcmd、bootargs

上一部分已经配置好了网络环境,我们要修改环境变量以保证开发板可以正常启动,uboot 环境变量中比较重要的环境变量就是 bootcmd 和 bootargs 目录 1、修改自启动命令 — bootcmd 2、修改自启动参数 —— bootargs (1) root/dev/nfs rw (2) nfsroot …

Godot引擎 4.0 文档 - 循序渐进教程 - 创建你的第一个脚本

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Creating your first script — Godot Engine (stable) documentation in English 创建你的第一个脚本 在本课中,您将编写您的第一个脚本,使用…

Datacom-HCIE 题库 02(10月26日更新)--含解析

单选题 1.[试题编号:189785] (单选题)如图所示,VTEP1上在BD20域内开启了ARP广播抑制功能,并且VTEP1通过 BGP EVPN路由学习到了PC2的ARP信息,则PC1发送的针对PC2的ARP请求,VIEP1在转发给VIEP2时…