scrapy框架核心知识Spider,Middleware,Item Pipeline,scrapy项目创建与启动,Scrapy-redis与分布式

scrapy项目创建与启动

创建项目

在你的工作目录下直接使用命令:

scrapy startproject scrapytutorial

运行后创建了一个名为scrapytutorial的爬虫工程

创建spider

在爬虫工程文件内,运行以下命令:

scrapy genspider quotes

创建了名为quotes的爬虫

修改爬虫代码,实现自己想要的爬虫逻辑

启动爬虫

在爬虫项目目录下,运行:

scrapy crawl quotes

即可运行爬虫

Spider

在scrapy中,网站的链接配置抓取逻辑解析逻辑都是在spider内配置。

在这里插入图片描述

start_requests

分析以下简单的爬虫代码:

import scrapy

class HttpbinspiderSpider(scrapy.Spider):
    # 定义 Spider 的名称
    name = "httpbinspider"
    
    # 设置允许爬取的域名
    allowed_domains = ["www.httpbin.org"]
    
    # 定义起始 URL
    start_uri = 'https://www.httpbin.org/get'

    # 定义 Spider 的起始请求
    def start_requests(self):
        # 使用循环生成多个请求,这里生成了 1 到 5 的 offset 参数
        for offset in range(1, 6):
            url = self.start_uri + f'?offset={offset}'
            
            # 生成请求,并指定回调函数为 parse
            # 同时将 offset 通过 meta 传递给回调函数
            yield scrapy.Request(url, callback=self.parse, meta={'offset': offset})

    # 定义数据处理逻辑
    def parse(self, response):
        # 打印 offset 和响应文本
        print(f"===============offset {response.meta['offset']}=========")
        print(response.text)
        
        # 打印 meta 数据,这里包含了在 start_requests 中传递的 offset
        print(response.meta)


这里我重写了start_requests方法,使用scrapy.Request构造了5个GET请求,并使用yield方法发送到下载器用于下载,同时指定了响应的解析回调函数,并通过meta参数传递offset参数。

简要说明:
name:定义 Spider 的名称。
allowed_domains:定义允许爬取的域名。
start_uri:定义起始 URL。
start_requests:生成起始请求,使用循环生成多个带有不同 offset 参数的请求,每个请求的回调函数是 parse。
parse:处理响应的回调函数,打印 offset、响应文本和 meta 数据。

spider发送GET请求

使用scrapy.Request(url=url)
scrapy.Request(method=‘GET’,url=url)
发送GET请求,查询参数建议拼接在url内。

spider发送POST请求

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Logistics 逻辑回归概念

1. sigmoid函数 逻辑回归算法的拟合函数,叫做sigmoid函数: 函数图像如下(百度图片搜到的图): sigmoid函数是一个s形曲线,就像是阶跃函数的温和版,阶跃函数在0和1之间是突然的起跳,…

Unity中URP下额外灯角度衰减

文章目录 前言一、额外灯中聚光灯的角度衰减二、AngleAttenuation函数的传入参数1、参数:spotDirection.xyz2、_AdditionalLightsSpotDir3、参数:lightDirection4、参数:distanceAndSpotAttenuation.zw5、_AdditionalLightsAttenuation 三、A…

【Git】windows系统安装git教程和配置

一、何为Git Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 二、git安装包 有2种版本,Git for Windows Setup和Git for Windows Portable(便携版)两个版本都可以。 三、Git for Windows Por…

【服务器】宝塔面板的使用手册

目录 🌷概述 🌼1. 绑定域名 🌼2. 添加端口 🌼3. 安装docker配置docker​​​​​​​ 🌼4. 软件商店 🌼5. 首页 🌷概述 宝塔面板的安装教程:【服务器】安装宝塔面板 &#x1f…

[BJDCTF2020]The mystery of ip

hint 猜测ip和XFF有关 加一个XFF 下面这一步是看了wp出来的:存在ssti 这里尝试用jinja的注入方法,页面回显了是php的smarty框架 查了一下smarty的注入方法,发现可以直接执行php命令 在根目录找到flag

SpringBoot深入解析:掌握自动装配机制及其定制化原理

推荐一款我一直在用的ChatGPT4.0国内站点,每日有免费使用额度,支持PC、APP、VScode插件同步使用 SpringBoot篇:SpringBoot的自动装配原理 SpringBoot是一个旨在简化Spring应用初始搭建以及开发过程的框架。它利用了Spring框架的依赖注入特性…

(免费分享)基于springboot,vue疗养中心管理系统

前端:vueelementUI 技术:springbootmybatisredis 数据库:mysql 功能:系统管理、信息管理、膳食管理、护理管理、床位管理、后勤管理、费用管理等 获取完整源码: 大家点赞、收藏、关注、评论啦 、查看 👇…

Java实现木马文件检测系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 木马分类模块2.3 木马软件模块2.4 安全资讯模块2.5 脆弱点模块2.6 软件检测模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 木马分类表3.2.2 木马软件表3.2.3 资讯表3.2.4 脆弱点表3.2.5 软件检测表…

「 典型安全漏洞系列 」07.OS命令注入详解

引言:什么是操作系统命令注入,如何防御和利用漏洞? 1. 简介 操作系统命令注入(OS command injection)是一种Web安全漏洞,允许攻击者在运行应用程序的服务器上执行任意操作系统(OS)命…

静态分析Golang语言生成函数调用关系的利器——go-callvis

目录 升级go删除旧版本安装新版本配置环境变量载入环境修改当前环境修改之后进入的环境 分析安装go-callvis分析其他包总结 导出文件总结 清晰主体脉络总结 其他 参考资料 不同于之前分析C语言项目的工具,go-callvis还是很方便使用。只要把两项工作做好就能顺利的使…

条件变量、线程池以及线程的GDB调试学习笔记

目录 一、条件变量 二、线程池概念和实现 三、线程的GDB调试 一、条件变量 应用场景:生产者消费者问题,是线程同步的一种手段。 必要性:为了实现等待某个资源,让线程休眠,提高运行效率 使用步骤: 初始…

SpringMVC 的请求流程(高频面试题)

文章目录 SpringMVC是什么,好处请求流程 SpringMVC 是什么,好处 Spring MVC 是Spring上最重要的框架。它是Web 框架,按照MVC 的模式,实现代码的解耦。Model 业务层、View 视图层、Controller 控制层。 将view层的请求数据在con…

【Android】在电脑连接操控手机上的Termux终端实现步骤

在Android手机上有一个Termux APP,可运行类似 Linux 终端的模拟器,想要学习Linux命令操作的话,可以用来练习,手机上输入命令不方便的话,可以用电脑连接手机终端输入命令练习的,来看看怎么实现连接。 文章目…

Advances in Deep Concealed Scene Understanding (伪装场景理解综述解读)

论文地址:https://link.springer.com/article/10.1007/s44267-023-00019-6 摘要 伪装场景理解是一个热门的计算机视觉课题,旨在感知展示伪装的物体,当前技术和应用的繁荣需要最新的研究调查,这可以帮助研究人员更好的了解全球CS…

【大数据】Flink 架构(四):状态管理

Flink 架构(四):状态管理 1.算子状态2.键值分区状态3.状态后端4.有状态算子的扩缩容4.1 带有键值分区状态的算子4.2 带有算子列表状态的算子4.3 带有算子联合列表状态的算子4.4 带有算子广播状态的算子 在前面的博客中我们指出,大…

做成任何事情的方法

怎么样把一件事情做成功呢? 传统的方法可能会告诉你:你首先要有一个目标,目标要明确,可量化,要遵循 SMART 原则;然后再把目标拆成一个个小目标,先实现一个小目标,再实现一个小目标&a…

研发日记,Matlab/Simulink避坑指南(八)——else if分支结构Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记,Matlab/Simulink避坑指南(三)——向上取整Bug》 见《研发日记,Matlab/Simulink避坑指南(四)——transpose()转置函数Bug》 见《研发日记,Matlab/Simuli…

Java强训day7(选择题编程题)

选择题 public class Test01{private static int x 100;public static void main(String[] args) {Test01 hs1 new Test01();hs1.x;Test01 hs2 new Test01();hs2.x;hs1new Test01();hs1.x;Test01.x--;System.out.println("x"x);} }public class Test01{private …

高级IO之epoll模型

一、epoll模型介绍 epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,用于监视一个或多个文件描述符,以查看它们是否可以进行读取、写入或异常处理。它能够显著提高程序在大量并发连接…

C语言系列-浮点数在内存中的存储

🌈个人主页: 会编程的果子君 ​💫个人格言:“成为自己未来的主人~” 目录 浮点数在内存中的存储 浮点数的存储 浮点数存的过程 浮点数取的过程 题目解析 浮点数在内存中的存储 常见的浮点数:3.14159.1E10等,浮点数家族包括&…