umi-request设置请求头_scrapy_splash 设置随机请求头

2023-11-04

本文为

霾大:scrapy_splash 爬取 js 加载网页初体验​zhuanlan.zhihu.com

的补充

在上面的文章中我们仅仅是初步完成了 scrapy_splash 的简单使用

接下来我们将介绍如何是使得 splash 在 render.html (默认)访问网页时也能动态调整其请求头等(代理等同理)

往常来说,我们设置 scrapy 的随机请求头是在中间件处,沿着这个思路,同理我们亦可以沿着这个思路设置,使得爬虫解析与反爬手段分离。

步骤

  1. 首先在 settings 文件放入一批 UA
USER_AGENTS = [
    'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
    'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0',
    'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)',
    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
    'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
    'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11',
    'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
]

2. 修改 middlewares 文件

import random
from scrapy_test.settings import USER_AGENTS

class RandomUA(object):
    def process_request(self, request, spider):
        ua = random.choice(USER_AGENTS)
        request.headers.setdefault('User-Agent', ua)

3. 在 settings 文件启用我们刚定义的中间件

DOWNLOADER_MIDDLEWARES = {
    # 'scrapy_test.middlewares.ScrapyTestDownloaderMiddleware': 543,
    'scrapy_test.middlewares.RandomUA': 543,
}

运行结果及解析

确认当前的 request 类型为 SplashRequest

匹配到目标数据,配置 headers 成功

推荐阅读

  1. 霾大:scrapy_splash 爬取 js 加载网页初体验

代码传送门

LZC6244/scrapy_splash_test​github.com

原创文章,转载请保留或注明出处!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

umi-request设置请求头_scrapy_splash 设置随机请求头 的相关文章

  • QT信号与槽的特点和用法

    1 概念 信号 Signal 就是在特定情况下被发射的事件 例如 PushButton 最常见的信号就是鼠标单 击时发射的 clicked 信号 槽 Slot 就是对信号响应的函数 槽就是一个函数 与一般的 C 函数是一样的 可以定义在类的
  • nested exception is org.apache.ibatis.binding.BindingException

    nested exception is org apache ibatis binding BindingException Parameter roleIdList not found Available parameters are 0
  • Date转换成LocalDateTime类型

    1 先new 一个当前时间 2 获取instant和zoneId 3 将instant和zoneId塞进LocalDateTime ofInstant这个方法里面 4大功告成 我也是今天碰到记录一下 省的以后在找
  • 生信学习——基于R的可视化习题30个(附详细答案解读)

    题目目录 一 基础绘图 1 对RNAseq expr的每一列绘制boxplot图 2 对RNAseq expr的每一列绘制density图 3 对RNAseq expr的每一列绘制条形图 4 对RNAseq expr的每一列取log2后重新
  • Qt串口调试助手

    串口通信因为其协议简单 应用灵活 被广泛使用 Qt自带了串口通信模块QtSerialPort 功能齐全 使用起来非常方便 QtSerialPort模块中有2个类使用的最多 分别是QSerialPort类和QSerialPortInfo类 Q
  • selenium-server-standalone.jar无法启动

    java jar selenium server standalone 2 48 0 jar htmlSuite firefox http localhost 8080 F selenium selenium 2 41 0 login su
  • idea默认文件类型关联

    idea在文件创建的时候没有指定后缀或关联成文本 解决 Editor gt File Types gt Text
  • 【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.64】即插即用新的注意力机制RFAConv

    前言 作为当前先进的深度学习目标检测算法YOLOv8 已经集合了大量的trick 但是还是有提高和改进的空间 针对具体应用场景下的检测难点 可以不同的改进方法 此后的系列文章 将重点对YOLOv8的如何改进进行详细的介绍 目的是为了给那些搞
  • [译] LLVM IR中间码指令集

    最近在研究这个东西 实在百度不到 最后在谷歌上找到英文手册 英文手册地址 https llvm org docs LangRef html 先说点废话 国内的IT水平离世界顶级水平差距实在有点大 个人感觉 有些因素导致这个结果 1 化身广告
  • 控制工程学习2

    前言 此文为个人学习笔记 所学习的视频链接 1 https www bilibili com video BV1hV411v7KB p 29 share source copy web 2 https www bilibili com vi
  • 快速实现Lora通信(一对多)详解

    TOC 一 Lora介绍 Lora不是一种协议 而是一种基于扩频通信的射频技术 它相对于其他射频技术比如2 4G或普通433 915M来讲 具有更远的传输距离 几千米 和更强的越障性能 所以我们把一个Lora设备作为中心点 多个Lora设备
  • https://www.cnblogs.com/wenwenli/p/8301975.html

    https www cnblogs com wenwenli p 8301975 html 单线程 单进程 非阻塞 事件驱动 句柄就是函数 事件驱动模型 事件源 触发事件 监听事件程序 事件处理程序 路径的要求不严格 node的知识点 1
  • 使用 WSL 在 Windows 上安装 Linux 编程

    使用 WSL 在 Windows 上安装 Linux 编程 近年来 随着开源软件的盛行和跨平台开发的需求不断增长 Windows Subsystem for Linux WSL 成为了一个备受瞩目的工具 WSL 允许我们在 Windows
  • pycharm设置中文,字体颜色修改,设置背景图片(图文讲解)

    目录 1 设置中文 2 设置背景图片 3 字体大小 颜色的修改 这个是我的pycharm编译器的样子 好看吧 pycharm在安装之后默认是英语的 有些小伙伴的英语不太会 看英文会比较吃力 这里我来教大家怎么去设置中文 以及字体颜色大小 背
  • 客户端client 突然断电了,那么服务器如何快速的知道呢

    1 使用定时器 适合有数据流动的情况 2 使用socket选项SO KEEPALIVE 适合没有数据流动的情况 心跳包技术 心跳包之所以叫心跳包是因为 它像心跳一样每隔固定时间发一次 以此来告诉服务器 这个客户端还活着 事实上这是为了保持长
  • elementui el-tree多层级数据递归根据条件筛选(禁用指定节点)

    项目中用的是elementui的tree组件 要实现的效果是根据关键字去筛选过滤出禁用的节点 所以首先需要的是对树结构数据进行整合 export function deepFilter3 nodes key query Array isAr
  • Android WebView 的使用

    WebView webView WebView findViewById R id webView webView loadUrl http 192 168 1 3 8080 action stream webView setWebView
  • 程序员如何写好一篇技术文章?

    结合自身写作经历以及本次训练营直播分享的内容 谈一谈写作技巧以及程序员如何写好一篇技术文章 1 写作训练营回顾 2020 年 12 月 26 日下午 我参加了一个写作训练营的直播 活动内容如下 该训练营是以直播的方式开展 四位嘉宾给大家分享
  • 图像识别ImageRecognition

    图像识别 注意 cv2中的色彩排列是 b g r 而matplotlib库中的排列方式是 r g b 本文件中采用plt进行输出 因此颜色不是准确的颜色 1 OpenCV 机器视觉 import cv2 as cv import numpy

随机推荐

  • 02C++11多线程编程之detach传参详解

    02C 11多线程编程之detach传参详解 这篇文章将介绍我们在使用detach时如何传参给子线程 1 detach传参为引用 include
  • 深度之眼(一)绪论和环境配置

    1 课程目标 缺乏语言基础 语言不够简洁 逻辑性差 规范性差 代码冗长 高效 解决相同问题 代码用时更长 占用内存更多 和强壮 容错性能差 知识体系不够完整 平时学习到知识点比较分散 用到了才去学习 人工智能和网络爬虫是python应用最多
  • 一个网站服务器有多少个ip,一个服务器可以有多少个ip地址

    一个服务器可以有多少个ip地址 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 会话保持 指负载均衡器可以识别客户与服务器
  • 通过高通平台简单总结的权限问题

    android 5 x开始 引入了非常严格的selinux权限管理机制 我们经常会遇到因为selinux权限问题造成的各种avc denied困扰 有时候我们在添加了一些驱动或应用的时候 发现不能用 但是程序本身查不出问题来 那就要抓log
  • 详解JAVA远程debug

    目录 1 什么是远程debug 2 远程debug普通JAVA程序 环境 测试程序 程序启动指令 编译器配置 3 远程debug JAVA Web程序 4 远程debug spring boot程序 1 什么是远程debug 远程debug
  • 2021.11.17网上商城项目01

    网上商城项目 数据库 Unity 1 导入Unity连接数据库的插件 插件已上传 有需要的同学可以自行下载 2 先创建一个工具类用于数据库的连接 更新 读取 以及数据库的连接 读取的关闭 这样就可以不用每次都写 减少了代码的冗余 需要使用数
  • TCP/IP协议栈各层涉及到的协议

    21 tcp FTP 文件传输协议 22 tcp SSH 安全登录 文件传送 SCP 和端口重定向 23 tcp Telnet 远程连接 80 tcp HTTP 443 tcp HTTPS 计算机各层网络协议 五层 应用层 典型设备 应用程
  • jsp页面中文乱码解决方法

    在运行jsp页面时 发现本该出现中文的地方 出现的是乱码 中文乱码出现的原因一般是编码不符 检查一下代码 可以看到
  • PyQt5-多线程的使用

    PyQt中的多线程 它能实现多任务 让界面用一个线程更新 让逻辑代码在另外一个线程中 互不影响 如果不使用多线程的话 在运行一个时间较长的代码时 程序会卡住 使用多线程 import sys import time from PyQt5 i
  • Linux中使用Docker安装ElasticSearch7.10.x集群

    使用Docker安装ElasticSearch7 10 x单节点请访问这里 一 集群环境说明 服务器IP地址 192 168 137 1 192 168 137 2 192 168 137 3 二 前期准备 1 拉取镜像 docker pu
  • linux下percona-toolkit工具包的安装和使用(超详细版)

    一 检查和安装与Perl相关的模块 PT工具是使用Perl语言编写和执行的 所以需要系统中有Perl环境 依赖包检查命令为 rpm qa perl DBI perl DBD MySQL perl Time HiRes perl IO Soc
  • 【Python】只需2行代码,轻松将PDF转换成Word(含示范案例)

    文章目录 一 前期准备 二 pdf2docx功能 三 限制 四 案例 一 前期准备 可将 PDF 转换成 docx 文件的 Python 库 该项目通过 PyMuPDF 库提取 PDF 文件中的数据 然后采用 python docx 库解析
  • 来自对Socket的深度剖析

    Socket是什么 socket 的中文解释为 插座 非常的生动形象 在计算机通信领域 socket 被翻译为 套接字 它是计算机之间进行通信的一种约定或一种方式 通过 socket 一台计算机可以接收其他计算机的数据 也可以向其他计算机发
  • 【技巧】easyUI的datagrid,如何在翻页以后仍能记录被选中的行

    easyUI的datagrid在复选框多选时 如何在翻页以后仍能记录被选中的行 注意datagrid中需要配置idField属性 一般为数据的主键 转载于 https www cnblogs com yx007 p 8081522 html
  • 接口测试面试题含答案

    1 解释一下正向和逆向测试 正向测试 针对接口设计预期的功能和行为 验证接口是否按照预期工作 逆向测试 针对错误输入 不合理的条件或非预期的使用方式 验证接口是否能够适当地处理这些情况并提供合理的错误处理 2 什么是API和Web服务 AP
  • 支持CUDA运算的显卡算力表

    GPUs supported Supported CUDA level of GPU and card CUDA SDK 1 0 support for compute capability 1 0 1 1 Tesla CUDA SDK 1
  • c++17 using继承所有构造函数

    include tmp h include
  • 三维坐标系怎么画?

    在中学时代主要接触的是二维平面坐标需系 但是在学习空间几何图形时 会需要用到三维坐标系 这就需要我们也要掌握其绘制方法 在黑板上画三维坐标系有点困难 所以要借助专业的绘图工具来完成 下面就一起来学习具体绘制技巧 几何画板作为专业的几何绘图软
  • 智能手机普及游戏 国内外巨头上演GPU芯片争霸

    转自 http tech sina com cn t 2014 02 12 16139155996 shtml 新浪科技讯 2月12日下午消息 随着近日国家解除游戏机禁令以及游戏向手机终端转移 国内外移动通信芯片厂商高通 75 62 0 9
  • umi-request设置请求头_scrapy_splash 设置随机请求头

    本文为 霾大 scrapy splash 爬取 js 加载网页初体验 zhuanlan zhihu com 的补充 在上面的文章中我们仅仅是初步完成了 scrapy splash 的简单使用 接下来我们将介绍如何是使得 splash 在 r