scrapy-设置请求头

2023-05-16

当我们大量使用scrapy 请求一个网站的时候我们知道scrapy默认的请求头是:
这里写图片描述
可以看到默认的请求头就是scrapy,这样就很容易导致浏览器封掉的可能,这个时候我们就需要给请求加一个请求头来模拟浏览器,一般的可以这样做:
这里写图片描述
可以直接在spider文件中添加custom_settings 这个设置,代码如下:

custom_settings = {
    'LOG_LEVEL': 'DEBUG',
    'LOG_FILE': '5688_log_%s.txt' % time.time(),   # 配置的日志
    "DEFAULT_REQUEST_HEADERS": {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
    }
}   # 添加的请求头

当然也可以随机的添加请求头,步骤如下:
第一步, 在settings文件中添加一些UserAgent,在这里笔者是查找别人的:

USER_AGENT_LIST=[
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
    "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
    "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]

同时在settings文件中设置 “DOWNLOADER_MIDDLEWARES”

DOWNLOADER_MIDDLEWARES = {
   # 'lagou.middlewares.LagouDownloaderMiddleware': 543,
    'lagou(项目的名称).middlewares.RandomUserAgentMiddleware': 400,
    scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None
}

第二步骤, 在 middlewares.py 文件中导入 settings模块中的 USER_AGENT_LIST 方法

from lagou.settings import USER_AGENT_LIST

同时在这个文件中添加以下的操作:

class RandomUserAgentMiddleware(object):
    def process_request(self, request, spider):
        rand_use  = random.choice(USER_AGENT_LIST)
        if rand_use:
            request.headers.setdefault('User-Agent', rand_use)

图片显示:

这里写图片描述
这样就可以了。

原创,转载需标明作者和来源。违者必究。

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

scrapy-设置请求头 的相关文章

  • Scrapy CrawlSpider 无法抓取第一个登陆页面

    我是 Scrapy 的新手 正在进行抓取练习 并且正在使用 CrawlSpider 尽管 Scrapy 框架运行良好并且它遵循相关链接 但我似乎无法使 CrawlSpider 抓取第一个链接 主页 登陆页面 相反 它直接抓取由规则确定的链接
  • 将 Tor 与 scrapy 框架结合使用

    我正在尝试抓取网站 该网站足够复杂以阻止机器人 我的意思是它只允许几个请求 之后 Scrapy 挂起 问题1 有没有办法 如果Scrapy挂起 我可以从同一点重新启动我的爬行过程 为了摆脱这个问题 我这样写了我的设置文件 BOT NAME
  • 用scrapy一一爬取网站列表

    我正在尝试抓取网站列表scrapy 我尝试将网站网址列表作为start urls 但后来我发现我买不起那么多内存 有什么办法可以设置scrapy一次抓取一两个网站 您可以尝试使用concurrent requests 1以免数据超载 htt
  • 为什么我的 Scrapy 中的输入/输出处理器不工作?

    我正在努力追随本教程 http doc scrapy org en 1 1 intro tutorial html 我想要我的desc字段是标准化为单个空格且大写的单个字符串 dmoz spider py import scrapy fro
  • 解析回调未定义 - 简单的 Webscraper (Scrapy) 仍未运行

    我google了半天还是没能搞定 也许你有一些见解 我尝试不是从终端而是从脚本启动我的抓取工具 这在没有规则的情况下运行良好 只需产生正常的解析函数即可 一旦我使用规则并将 callback parse 更改为 callback parse
  • Scrapy Python Craigslist Scraper

    我正在尝试使用 Craigslist 分类广告Scrapy提取待售物品 我能够提取日期 帖子标题和帖子 URL但提取时遇到问题price 由于某种原因 当前代码提取all的价格 但是当我删除 在价格范围之前查找价格字段返回为空 有人可以查看
  • 如何在 Scrapy/Twisted 中使用线程,即如何在响应回调中对阻塞代码进行异步调用?

    我需要在Scrapy中运行一些多线程 多处理工作 因为我有一些使用阻塞调用的库 并在完成后将请求放回Scrapy引擎 我需要这样的东西 def blocking call self html do some work in blocking
  • 使用scrapy到json文件只得到一行输出

    好吧 我对一般编程很陌生 并且具体使用 Scrapy 来实现此目的 我编写了一个爬虫来从 pinterest com 上的 pin 获取数据 问题是我以前从我正在抓取的页面上的所有引脚获取数据 但现在我只获取第一个引脚的数据 我认为问题出在
  • 在 scrapy 中将基本 url 与结果 href 结合起来

    下面是我的蜘蛛代码 class Blurb2Spider BaseSpider name blurb2 allowed domains www domain com def start requests self yield self ma
  • scrapy python 请求未定义

    我在这里找到了答案 code for site in sites Link site xpath a href extract CompleteLink urlparse urljoin response url Link yield Re
  • Selenium 与 scrapy 的动态页面

    我正在尝试使用 scrapy 从网页中抓取产品信息 我要抓取的网页如下所示 从包含 10 个产品的 Product list 页面开始 单击 下一步 按钮将加载接下来的 10 个产品 两个页面之间的 URL 不会改变 我使用 LinkExt
  • 如何使用XPath选择非空段落?

    我想要抓取的网页具有类似的结构 每个都有一个段落是一个问题 一个段落是一个答案 我想抓取每个问题和答案并将它们存储在两个项目中 问题是 在某些页面上 问题和答案分别是 xxx p 1 and xxx p 2 但在其他页面上 xxx p 1
  • 在flatpak项目中使用scrapy脚本

    我正在构建一个 flatpak 构建的项目 我有一个按钮 当单击它时我希望它运行 scrapy 脚本来抓取数据 窗口用户界面
  • 我的扩展中未收到 Scrapy Spider_idle 信号

    我在几个蜘蛛之间有共同的行为spider idle正在接收信号 我想将此行为移至扩展中 我的分机已经监听spider opened and spider closed信号成功 但是 那spider idle未收到信号 这是我的扩展 为简洁起
  • 运行Scrapy的Django自定义管理命令:如何包含Scrapy的选项?

    我希望能够运行Scrapy网络爬虫框架 http scrapy org 来自 Django 内部 Scrapy本身只提供了一个命令行工具scrapy执行其命令 即该工具不是故意编写为从外部程序调用的 用户米哈伊尔 科罗博夫 https st
  • 从 Splash 请求中读取 cookie

    我在使用 Splash 发出请求后尝试访问 cookie 以下是我构建请求的方式 script function main splash splash init cookies splash args cookies assert spla
  • Scrapy Splash,如何处理onclick?

    我正在尝试抓取以下内容 我能够收到响应 但我不知道如何访问以下项目的内部数据以抓取它 我注意到访问这些项目实际上是由 JavaScript 和分页处理的 这种情况我该怎么办 下面是我的代码 import scrapy from scrapy
  • scrapy-如何停止重定向(302)

    我正在尝试使用 Scrapy 抓取 url 但它会将我重定向到不存在的页面 Redirecting 302 to
  • scrapyd-client 命令未找到

    我刚刚在 virtualenv 中安装了 scrapyd client 1 1 0 并成功运行命令 scrapyd deploy 但是当我运行 scrapyd client 时 终端显示 命令未找到 scrapyd client 根据自述文
  • 安装 scrapy 0.22 时出错(在 Ubuntu 12.04 上):“gcc”失败,退出状态为 1

    尝试使用 pip 从命令行安装 Scrapy 时 sudo pip install scrapy我收到以下错误 error command gcc failed with exit status 1 查看错误输出中的几行 我发现在尝试安装

随机推荐

  • python中zmq的基础三种模式

    ZMQ 的三个基本模型 ZMQ 提供了三个基本的通信模型 xff0c 分别是 Request Reply xff0c Publisher Subscriber xff0c Parallel Pipeline 请求应答模式 xff08 Req
  • AI安全01 人工智能的安全性

    前言 提问 xff1a GPT老师 xff0c 我想写一篇阅读量高一点的信息安全博文 xff0c 您可以推荐写作主题吗 xff1f GPT老师 xff1a 人工智能与信息安全 写在前面 xff1a 1 笔者相关知识存储很少 xff0c 这篇
  • 关于linux下进程和线程优先级的一些总结

    1 进程 1 1 基础 进程优先级值越小 xff0c 优先级越大 xff0c 进程的优先级是PRI值不是Nice值 xff0c 普通进程优先级可以通过Nice值调整 xff0c 实时进程不行 Linux的进程分普通进程 xff08 非实时进
  • 采用x11转发实现远程docker容器的图形化显示

    本地ubuntu主机 windows下有多种图形化工具可以用 xff0c 具体可参考wsl2图形化显示 1 主机安装x11 utils 2 xhost 43 进行授权 远程docker 1 安装ssh并修改 etc ssh sshd con
  • JavaScript类型

    为什么有的编程规范要求用 void 0 代替 undefined xff1f 字符串有最大长度吗 xff1f 0 1 43 0 2 不是等于 0 3 么 xff1f 为什么 JavaScript 里不是这样的 xff1f ES6 新加入的
  • ubuntu 内网搭建服务器的一些配置,完美解决https、http、curl、wget、yum 无法访问的问题

    1 一些需求可能要 继承IP 网关才能连接到外网 xff0c linux 不知道在如何配置可以来看看 http proxy 61 http 192 254 1 10 8088 ftp proxy 61 http 192 254 1 10 8
  • 堆、栈、队列、各种变量(静态、动态、全局、局部)的区别和联系

    堆栈都是一种数据项按序排列的数据结构 xff0c 只能在一端 称为栈顶 top 对数据项进行插入和删除 堆 heap 堆 xff08 操作系统 xff09 xff1a 一般由程序员分配释放 xff0c 若程序员不释放 xff0c 程序结束时
  • 论文中baseline是什么意思?

    问题1 xff1a benchmark和baseline的区别 xff1f 在计算机视觉论文中benchmark和baseline的区别 问题2 xff1a 经常在论文中看见baseline但是不明白里面是在写的什么 xff1f 其实就是你
  • linux 执行命令提示无权限排查思路

    问题描述 在root用户下su到普通用户出现权限问题 root 64 hehe su zh su warning cannot change directory to home zh Permission denied su failed
  • C#应用程序界面开发进阶——高级窗体控件(2)——列表视图控件(最后一个代码不行)

    列表视图 xff08 ListView xff09 控件是Windows列表视图控件 xff0c 用于显示带图标的项的列表 创建列表视图控件 为列表视图控件添加项有以下两种方法 xff08 1 xff09 直接单击控件上方的小箭头 xff0
  • ubuntu16.04LTS更换阿里源

    sudo gedit etc apt sources list 替换 xff1a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 deb cdrom Ubuntu 16 04 LTS Xenial
  • Nginx 配置问题 server directive is not allowed here in /etc/nginx/nginx.conf:69

    前沿 今天在其他服务器上重新配置 nginx conf 文件 xff0c 配置结束启动 nginx 发现遇到了这样一个错误 xff0c 我擦 我配置文件都是从上个服务器上 复制粘贴过来的 xff0c 怎么会遇到这个问题呢 xff1f 百思不
  • labelImg ZeroDivisionError: float division by zero 问题定位和解决方案

    一 前沿 labelImg的使用和安装这里不过多讲解 xff0c 网上一堆教程 二 问题以及解决方案 2 1 问题如下 xff1a Traceback span class token punctuation span most recen
  • Linux系统下查看版本信息

    一 前沿 有时候回去查看Linux的版本信息和内核 xff0c 每次可能都需要百度一下 xff0c 今天记录一下 xff0c 方便以后自己看 二 查看Linux内核版本命令 2 1 第一种方式 显示正在运行的内核版本 1 cat proc
  • Centos7下安装 prometheus+grafana

    一 前言 1 什么是 Prometheus xff1f Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 自2012年成立以来 xff0c 许多公司和组织都采用了Prometheus xff0c 该项目拥有非
  • Linux ssh:handshake failed:EOF

    一 前沿 1 Notes xff1a 以下操作均在 京东云服务器 2 在配置好免密登陆之后 xff0c 通过ssh登陆的时候间接性的遇见 ssh handshake failed EOF 真是让人恼火 xff0c 所以给总结一下 二 解决步
  • prometheus 文件配置小技巧优化

    一 前言 很久没看过监控 xff0c 直到公司机器越来越多 xff0c 项目越来越多 xff0c prometheus yml 文件一直在增加显得很杂乱无章 xff0c 这里优化了根据项目文件来改配置文件 二 优化 1 prometheus
  • prometheus通过process-exporter监控进程并实现企业报警

    一 前沿 通过上级篇文章我们已经对 Prometheus监控服务器基础资源做了记录 xff0c 这节课主要记录一下监控服务器上的进程 二 实现步骤 Prometheus机器IPprocess exporter机器IP192 168 1 31
  • python - RSA加密

    什么是RSA xff1f 这里粘贴一些定义 RSA公开密钥密码体制 所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥 xff0c 是一种 由已知加密密钥推导出解密密钥在计算上是不可行的 密码体制 在公开密钥密码体制中 xff0c 加密
  • scrapy-设置请求头

    当我们大量使用scrapy 请求一个网站的时候我们知道scrapy默认的请求头是 xff1a 可以看到默认的请求头就是scrapy xff0c 这样就很容易导致浏览器封掉的可能 xff0c 这个时候我们就需要给请求加一个请求头来模拟浏览器