Scrapy配置文件设置(全网最全)

Scrapy配置设置(全网最全):

背景:

​ 之前在做爬虫项目的时候,老报错或有问题,我看了网上很多文章,但是都不是很全面,在这里写一篇博客给大家讲讲scrapy文件中的setting.py文件,我们如何使用。

当我们创建完一个工程只有下面的内容是打开注释的:

BOT_NAME = 'scrapy_baidu_091' # 爬虫的名称,用于在多个爬虫项目中进行区分。
SPIDER_MODULES = ['scrapy_baidu_091.spiders']
NEWSPIDER_MODULE = 'scrapy_baidu_091.spiders' # 指定爬虫模块的位置

在这里插入图片描述

相关配置:

君子协议:
  • 设置是否遵守网站的robots.txt协议。在这个配置中,它被设置为False,表示不遵守协议。
  • 我们在爬虫的时候一般设置为False,不然拿不到我们需要的数据。
ROBOTSTXT_OBEY = False
UA伪装:

USER_AGENT:用于模拟浏览器发送请求时的用户代理(User-Agent)字符串。可以设置为常见浏览器的 User-Agent,就是浏览器的唯一标识,所以我们应该模拟浏览器发送请求

USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
下载延迟:

​ 下载延迟,即发送两个连续请求之间的等待时间,用于控制爬取速度。可以设置为一个浮点数,单位为秒。设置这个的原因是减少对浏览器的冲击,如果不设置,容易被检测出来,一般来说设置3秒即可。

DOWNLOAD_DELAY:3 
是否启用cookie:

​ COOKIES_ENABLED:一个布尔值,用于指定是否启用 cookies。默认为 True,表示启用,我们都知道http是无痕迹的,服务器端识别客户端cookie的存在,比如一些需要登录的页面,我们需要告知我们是谁,这是需要用到cookie。当设置为False时,Scrapy将不会在请求中携带或处理Cookie信息。这对于需要匿名访问或不需要维护会话状态的爬取任务可能是有用的。

COOKIES_ENABLED:True
默认请求头:
  • 可以设置默认的请求头。你可以根据需要修改这些请求头,包括Accept、Accept-Language等字段,以便在发送请求时指定特定的头部信息。
DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en',
}
DEFAULT_REQUEST_HEADERS = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36','Cookie': 'xxxxx'
}
导出字段:

比如我们想要制定导出字段顺序,可以使用下面的参数。

json格式,默认为Unicode编码:

  • scrapy crawl itcast -o teachers.json

json lines格式,默认为Unicode编码:

  • scrapy crawl itcast -o teachers.json

csv 逗号表达式,可用Excel打开:

  • scrapy crawl itcast -o teachers.csv

xml格式

  • scrapy crawl itcast -o teachers.xml
# 设置csv存储字段的顺序
FEED_EXPORT_FIELDS = ['title','url', 'desc','time']

导出字段详细配置编码:

# 设置导出数据的格式为CSV
FEED_FORMAT = 'csv'
# 设置导出数据的存储路径为文件系统中的相对路径
FEED_URI = 'file:./output/data.csv'
# 设置导出数据的编码格式为UTF-8
FEED_EXPORT_ENCODING = 'utf-8'
# 设置导出数据时的缩进级别为2,适用于可读性更好的JSON或XML导出
FEED_EXPORT_INDENT = 2
# 设置导出字段的顺序
FEED_EXPORT_FIELDS = ['field1', 'field2', 'field3']
# 设置是否存储空结果
FEED_STORE_EMPTY = True
重定向和refer:

REDIRECT_ENABLE表示Scrapy的重定向功能,当设置为False时,Scrapy将不会自动处理服务器返回的重定向响应,而是将重定向的响应直接返回给回调函数。这对于需要手动处理重定向或禁止重定向的爬取任务可能是有用的。

REFERER_ENABLED = True 表示启用了Scrapy的Referer(引用页)处理功能。当设置为True时,Scrapy会自动在请求中添加Referer头部,指示该请求是从哪个页面链接过来的。这对于模拟真实的浏览行为和遵守网站的引用约定可能是有用的。

REDIRECT_ENABLED = False
REFERER_ENABLED = True
进程并发:

​ 同时发送的请求数量。可以设置为一个整数,表示同时发送的最大请求数,默认值是16。

CONCURRENT_REQUESTS = 32  

CONCURRENT_REQUESTS_PER_DOMAIN:每个域名同时发送的请求数量。可以设置为一个整数。
CONCURRENT_REQUESTS_PER_IP:每个 IP 地址同时发送的请求数量。可以设置为一个整数。

CONCURRENT_REQUESTS_PER_DOMAIN = 16
CONCURRENT_REQUESTS_PER_IP = 16
下载超时:

DOWNLOAD_TIMEOUT:下载超时时间,即等待服务器响应的最大时间。可以设置为一个整数,单位为秒。

DOWNLOAD_TIMEOUT =10 
管道:
  • ITEM_PIPELINES:数据处理管道的设置。可以通过添加自定义的管道类来对爬取到的数据进行处理和存储,一般做数据处理和持久化存储。
ITEM_PIPELINES = {'scrapy_baidu_091.pipelines.ScrapyBaidu091Pipeline': 300,
}
中间件:
  • 中间件分两种一个是下载中间件,另一个是爬虫中间件,比如我们需要设置代理ip,就需要放在下载中间件里面,或者想结合selenium做一些拦截响应等等需要开启下载中间件,爬虫中间件一般修改。
SPIDER_MIDDLEWARES = {'scrapy_baidu_091.middlewares.ScrapyBaidu091SpiderMiddleware': 543,
}DOWNLOADER_MIDDLEWARES = {'scrapy_baidu_091.middlewares.ScrapyBaidu091DownloaderMiddleware': 543,
}
  • 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': None 表示禁用了Scrapy自带的Cookie中间件。Cookie中间件用于处理请求中的Cookie信息,以便在爬取过程中保持会话状态。
  • 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': None 表示禁用了Scrapy自带的重定向中间件。重定向中间件用于处理服务器返回的重定向响应,将请求自动重定向到新的URL地址。
  • 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 101 表示启用了Scrapy自带的HTTP代理中间件。该中间件用于设置和切换HTTP代理,以实现匿名访问或绕过IP限制等。
DOWNLOADER_MIDDLEWARES = {'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': None,'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': None,# 'douban2.middlewares.IPProxyMiddleware': 100,'douban2.middlewares.ProxyDownloaderMiddleware': 100,'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 101,
}
请求重试:
  • RETRY_ENABLED = True 表示启用了Scrapy的请求重试功能。当请求失败时,Scrapy将自动重试该请求。
  • RETRY_TIMES = 3 表示设置了最大重试次数为3次。即当请求失败时,Scrapy将尝试重新发送请求最多3次。
  • RETRY_HTTP_CODES = [500, 502, 503, 504] 表示定义了需要进行重试的HTTP状态码。在这个示例中,当请求返回的HTTP状态码是500、502、503或504时,Scrapy会认为请求失败,并进行重试
# 配置请求重试策略
RETRY_ENABLED = True
RETRY_TIMES = 3
RETRY_HTTP_CODES = [500, 502, 503, 504]
日志等级:
  • 日志输出级别,用于控制日志的详细程度。可以设置为 'CRITICAL''ERROR''WARNING''INFO''DEBUG',用的最多的是error(只有报错才输出日志)和waring(只有警告才输出日志)。
LOG_LEVEL='ERROR' 
扩展:
  • EXTENSIONS:启用或禁用扩展,可以在这里配置相关扩展。
EXTENSIONS = {'scrapy.extensions.telnet.TelnetConsole': None,
}
自动限速扩展:
  • AUTOTHROTTLE_ENABLED:启用或禁用自动限速扩展。自动限速可以根据服务器的负载自动调整爬取速度
AUTOTHROTTLE_ENABLED = True
缓存:
  • HTTPCACHE_ENABLED:启用或禁用HTTP缓存。启用后,Scrapy可以缓存已下载的响应,下次遇到相同的请求时可以直接使用缓存的响应。
HTTPCACHE_ENABLED = True

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

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

相关文章

每周一算法:数独游戏

题目链接 数独游戏 题目描述 数独是根据 9 9 9 \times 9 99 盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含 1 − 9 1 - 9 1−9 ,不重复。每一道合格的数独谜题都有且仅有唯一答案&#x…

align-item 和 align-content

align-item 和 align-content flex 布局中的 align-items 和 align-content 属性都用于垂直对齐 flex 容器内的项目,但它们适用于不同的情况: align-items: 这个属性用于在交叉轴上对齐单行内的 flex 项目。当你有一个 flex 容器,并且里面的…

通信入门系列——信号的频谱分析

一、信号频谱 信号的频谱,指的是一段频率范围内的情况,信号的幅度和相位的情况。 以一个频率为1Hz的余弦电压信号进行说明,这个信号的傅里叶变换为X(ω)πδ(ω-2π)πδ(ω2π),也就是所谓的频谱密度,单位为V/(rad/…

vue3-表单输入绑定

表单输入绑定 获取表单输入的值方式&#xff1a; 手动连接值绑定和更改事件监听器 v-model 指令 &#xff08;常用&#xff09; <script lang"ts" setup> import { ref } from "vue" // 定义个变量接收输入的内容&#xff1a; const text ref(&…

PMP冲突解决策略:项目经理的必备技能

原创不易&#xff0c;你们的点赞收藏是我创作的动力&#xff01; 在项目管理领域&#xff0c;冲突是不可避免的现象。作为项目经理&#xff0c;掌握有效的冲突解决策略至关重要。本文将为您详细介绍PMP&#xff08;项目管理专业&#xff09;中常用的几种冲突解决策略&#xff…

rviz可视化机械臂(python)

一、准备的东西 一个机械臂的urdf 规划的路径点 二、launch文件的撰写 1.初始化 <?xml version"1.0" encoding"utf-8"?> <launch><param name"robot_description" textfile"机械臂.urdf" /><node name&qu…

Kotlin-控制流程

&#x1f4d1;前言 本文主要是【Kotlin】——Kotlin-控制流程的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句…

mac下配置git自定义快捷命令

1. 指定自定义别名 vi ~/.bash_profile open ~/.bash_profile 配置环境变量,插入类似下面的内容 .bash_profile文件 alias gcgit checkout alias gmgit commit -m alias gcbgit checkout -balias gtgit statusalias gagit add .alias glggit logalias gdgit diffalias gr…

mysql安装及部署

1.在/usr/local下创建mysql目录 cd /usr/local mkdir /mysql 2.在mysql目录中下载 cd mysql/ wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.34-1.el9.x86_64.rpm-bundle.tar 3.解压 tar xvf mysql-8.0.34-1.el9.x86_64.rpm-bundle.tar 4.安装 dnf localinst…

Ivanti Connect Secure 曝两大零日漏洞,已被大规模利用

威胁情报公司Volexity发现&#xff0c;影响 Ivanti 的 Connect Secure VPN 和 Policy Secure 网络访问控制 (NAC) 设备的两个零日漏洞正在被大规模利用。自1月11日开始&#xff0c;多个威胁组织在大范围攻击中利用CVE-2023-46805身份验证绕过和CVE-2024-21887命令注入漏洞。 V…

分类问题:人工神经网络(ANN)+BP算法(误差后向传播)+考试例题讲解

学习链接:分类问题:人工神经网络(ANN)+BP算法(误差后向传播)+考试例题讲解 资料链接:链接:https://pan.baidu.com/s/1ijvMQmwtRgLO4KDSsNODMw 提取码:vyok 神经网络的应用非常的广,它核心思想非常简单,就是人是如何认知感知并且处理这个世界中的现实问题的。…

[C++] opencv - copyTo函数介绍和使用案例

copyTo函数介绍 copyTo函数是OpenCV库中的一个成员函数&#xff0c;用于将一个Mat对象的内容复制到另一个Mat对象中。 函数原型&#xff1a; void cv::Mat::copyTo(OutputArray m) const;void cv::Mat::copyTo(OutputArray m, InputArray mask) const; 参数说明&#xff1a;…

大创项目推荐 深度学习的水果识别 opencv python

文章目录 0 前言2 开发简介3 识别原理3.1 传统图像识别原理3.2 深度学习水果识别 4 数据集5 部分关键代码5.1 处理训练集的数据结构5.2 模型网络结构5.3 训练模型 6 识别效果7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习…

安全跟我学|这些网络安全知识,请务必牢记

随着“互联网”时代的到来&#xff0c;人们的生活变得更加便利&#xff0c;但电信诈骗、信息泄露、网络谣言、恶意软件等也随之而来。面对网络这把双刃剑&#xff0c;如何绷紧思想“安全弦”&#xff0c;正确安全使用网络呢&#xff1f;带着这些疑问&#xff0c;让我们一起来学…

【不需要网络不需要显卡】本地部署GPT

【不需要网络/不需要显卡】本地部署GPT 大家好&#xff0c;我是老 J 我们都知道ChatGPT目前只有两种使用方式&#xff0c;一种是直接去官网访问&#xff0c;适合个人用户&#xff1b;另一种是API调用&#xff0c;适合企业或者网站使用。这两种方式的门槛都比较高&#xff0c;…

springboot105基于保信息学科平台系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的基于保信息学科平台系统设计与实现 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 …

PXE批量高效网络装机

总结 1实验流程只能抄老师&#xff0c;记忆浅 2排错能力几乎无 3 指令用的太死&#xff0c; 一 系统装机的三种引导方式 启动 操作 系统 1.硬盘 2.光驱&#xff08;u盘&#xff09; 3.网络启动 pxe 重装系统&#xff1f; 在已有操作系统 新到货了一台服务器&#xff…

联合体中嵌套结构体,结构体未命名时,结构体成员变量的引用

参考文章&#xff1a;C语言 结构体 联合体 | 嵌套使用_联合体里面嵌套结构体-CSDN博客 如题&#xff0c;其实直接用 联合体名.结构体成员变量名 即可。 程序&#xff1a; #include <stdio.h>typedef unsigned int uint32_t; typedef unsigned char uint8_t;union b…

GNSS数据下载软件 -- 武汉大学 Fast软件(体验感极佳~)

目录 一、简介与下载地址 1.介绍 2.软件特点 3.下载地址 4.以github下载链接为例 二、下载方法(三种方法&#xff0c;以windows系统为例) 1.双击"Fast.exe"根据提示引导下载 2.手动输入"cmd"进入命令行界面&#xff0c;通过输入相关命令进行下载 …

el-date-picker如果超过限制跨度则提示

需求&#xff1a;实现日期时间选择组件跨度如果超过限制天数&#xff0c;点击查询则提示超过限制时间 封装一个方法&#xff0c;传入开始和结束时间以及限制天数&#xff0c;如果超过则返回false //计算时间跨度是否超过限制天数isTimeSpanWithinLimit(startTime, endTime, li…