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 正确发送电子邮件,我忘记了什么

    我想使用 Scrapy 发送电子邮件 我看了 throw 官网 发现可以这样做 from scrapy mail import MailSender from scrapy utils project import get project
  • Scrapy 返回多个项目

    我是 Scrapy 的新手 我真的不知道如何在一个块中返回多个项目 基本上 我得到一个 HTML 标签 其中有一个引用 其中包含文本 作者姓名的嵌套标签以及有关该引用的一些标签 这里的代码只返回一个引号 仅此而已 它不使用循环来返回其余部分
  • scrapy json将所有项目输出在一行上

    我试图让我的输出看起来像下面的 json 格式 loser De Schepper K winner Herbert P url https www sofascore com tennis 2018 02 07 但我目前正在为每个失败者项
  • 如何从 scrapy 蜘蛛回调中收集统计信息?

    如何从蜘蛛回调中收集统计数据 Example class MySpider Spider name myspider start urls http example com def parse self response stats set
  • 使用 beautiful soup 清理 scrapy 中刮掉的 HTML

    我正在使用 scrapy 尝试从 Google Scholar 中抓取一些我需要的数据 例如 考虑以下链接 http scholar google com scholar q intitle 3Apython xpath http scho
  • Python:Scrapy CSV 导出不正确?

    我只是想写入 csv 但是 我有两个单独的 for 语句 因此每个 for 语句的数据独立导出并破坏顺序 建议 def parse self response hxs HtmlXPathSelector response titles hx
  • 如何在程序中向scrapy爬虫传递参数?

    我是 python 和 scrapy 的新手 我用的是这个博客的方法以编程方式运行多个 scrapy 蜘蛛 http kirankoduru github io python multiple scrapy spiders html在烧瓶应
  • Scrapy:遇到302时如何停止请求?

    我正在使用 Scrapy 2 4 从 start urls 列表中抓取特定页面 这些 URL 中的每一个可能都有 6 个结果页面 因此我请求全部结果页面 然而 在某些情况下 只有 1 个结果页面 所有其他分页页面都会返回 302 到 pn
  • 在 Windows 10、Python 3.8.0 上安装 Twisted 时出错

    无法安装 Twistedpip install Twisted windows platform 在 Windows 10 上使用 Python 3 8 0 错误 ERROR Command errored out with exit st
  • Scrapy:如何在蜘蛛中使用项目以及如何将项目发送到管道?

    我是新来的scrapy我的任务很简单 对于给定的电子商务网站 抓取所有网站页面 寻找产品页面 如果 URL 指向产品页面 创建一个项目 处理项目以将其存储在数据库中 我创建了蜘蛛 但产品只是打印在一个简单的文件中 我的问题是关于项目结构 如
  • 如何使用google api抓取数据

    import requests def search query pages 4 rsz 8 url https ajax googleapis com ajax services search web params v 1 0 Versi
  • Scrapy蜘蛛抓取页面和抓取项目之间的区别

    我正在编写一个 Scrapy CrawlSpider 它读取第一页上的 AD 列表 获取一些信息 例如列表和 AD url 的缩略图 然后向每个 AD url 发出请求以获取其详细信息 它在测试环境中工作和分页显然很好 但今天试图进行完整的
  • 我有 12000 个已知 URL,用 Python 抓取它们的最快方法是什么?

    因此 我有一个从数据库中提取的 URL 列表 我需要抓取并解析每个 URL 的 JSON 响应 某些 URL 返回 null 而其他 URL 返回发送到 csv 文件的信息 我目前正在使用Scrapy 但是抓取这12000个URL大约需要4
  • Scrapy - 抓取时发现的抓取链接

    我只能假设这是 Scrapy 中最基本的事情之一 但我就是不知道如何去做 基本上 我会抓取一页来获取包含本周更新的网址列表 然后我需要一一进入这些网址并从中获取信息 我目前已经设置了两个刮刀 并且它们可以完美地手动工作 因此 我首先从第一个
  • scrapy中如何处理302重定向

    我在抓取网站时收到来自服务器的 302 响应 2014 04 01 21 31 51 0200 ahrefs h DEBUG Redirecting 302 to
  • 每个 start_url 已抓取多少个项目

    我使用 scrapy 抓取 1000 个 url 并将抓取的项目存储在 mongodb 中 我想知道每个网址找到了多少个项目 从 scrapy 统计数据我可以看到 item scraped count 3500但是 我需要分别对每个 sta
  • Scrapy文件下载如何使用自定义文件名

    For my scrapy http doc scrapy org index html我目前正在使用的项目文件管道 https doc scrapy org en latest topics media pipeline html scr
  • 如何使用 BeautifulSoup4 获取
    标记之前的所有文本

    我正在尝试为我的应用程序抓取一些数据 我的问题是我需要一些 HTML 代码如下 tr td This a class tip info href blablablablabla is a first a sentence br This a
  • BaseSpider 和 CrawlSpider 的区别

    我一直在尝试理解在网页抓取中使用 BaseSpider 和 CrawlSpider 的概念 我已阅读docs http doc scrapy org en latest topics spiders html但没有提及BaseSpider
  • 如何自动检索AJAX调用的URL?

    目的是对爬行蜘蛛进行编程 使其能够 1 检索此页面表格中链接的 URL http cordis europa eu fp7 security projects en html http cordis europa eu fp7 securi

随机推荐

  • 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 这个时候我们就需要给请求加一个请求头来模拟浏览器