【Python_Scrapy学习笔记(三)】Scrapy框架之全局配置文件settings.py详解

news/2024/7/19 12:38:13 标签: python, scrapy, 网络爬虫, 爬虫

Scrapy框架之全局配置文件settings.py详解

前言

settings.py 文件是 Scrapy框架下,用来进行全局配置的设置文件,可以进行 User-Agent 、请求头、最大并发数等的设置,本文中介绍 settings.py 文件下的一些常用配置

正文

1、爬虫的项目目录名、爬虫文件名

BOT_NAME:Scrapy 项目实现的 bot 的名字。用来构造默认 User-Agent,同时也用来 log。 当使用 startproject 命令创建项目时其也被自动赋值。
SPIDER_MODULES:爬虫文件名。

python"># Scrapy settings for Baidu project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
#     https://docs.scrapy.org/en/latest/topics/settings.html
#     https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://docs.scrapy.org/en/latest/topics/spider-middleware.html
# 爬虫的项目目录名
BOT_NAME = "Baidu"
SPIDER_MODULES = ["Baidu.spiders"]
NEWSPIDER_MODULE = "Baidu.spiders"

2、设置USER_AGENT

USER_AGENT:爬取的默认User-Agent。

python"># Crawl responsibly by identifying yourself (and your website) on the user-agent
# 设置USER_AGENT
USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko)"

3、设置是否遵循robots协议(必须!)

ROBOTSTXT_OBEY:是否遵循 robots 协议,默认为True,需要设置为False 必须要设置的!

python"># Obey robots.txt rules
# 是否遵循robots协议,默认为True,需要设置为False 必须要设置的!
ROBOTSTXT_OBEY = False

4、设置最大并发量

CONCURRENT_REQUESTS:最大并发量,默认为16,可以理解为开多少线程

python"># Configure maximum concurrent requests performed by Scrapy (default: 16)
# 最大并发量,默认为16,可以理解为开多少线程
CONCURRENT_REQUESTS = 16

5、设置下载延迟时间

DOWNLOAD_DELAY:每隔多长时间去访问一个页面(每隔一段时间发请求,降低数据抓取频率)

python"># See also autothrottle settings and docs
# 下载延迟时间:每隔多长时间去访问一个页面(每隔一段时间发请求,降低数据抓取频率)
DOWNLOAD_DELAY = 1

6、设置是否启用Cookie

COOKIES_ENABLED:是否启用Cookie,默认是禁用的,取消注释即为开启Cookie

python"># 是否启用Cookie,默认是禁用的,取消注释即为开启Cookie
# 注释的情况:禁用 ;
# 取消注释并设置为False:找settings.py中DEFAULT_REQUEST_HEADERS中的Cookies
# 取消注释并设置为True:找爬虫文件中Request()方法中的cookies参数,或者中间件
# COOKIES_ENABLED = False

7、设置请求头

DEFAULT_REQUEST_HEADERS:请求头,类似于requests.get()方法中 headers 参数

python"># Override the default request headers:
# 请求头,类似于requests.get()方法中 headers 参数
DEFAULT_REQUEST_HEADERS = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en"
}

8、设置是否启用中间件

DOWNLOADER_MIDDLEWARES:开启中间件,项目目录名.模块名.类名:优先级(1-1000不等)

python"># Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
# 开启中间件
# 项目目录名.模块名.类名:优先级(1-1000不等)
# DOWNLOADER_MIDDLEWARES = {
#    "Baidu.middlewares.BaiduDownloaderMiddleware": 543,
# }

9、设置是否启用实体管道

ITEM_PIPELINES:开启管道,项目目录名.模块名.类名:优先级(1-1000不等)

python"># Configure item pipelines
# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
# 开启管道
# 项目目录名.模块名.类名:优先级(1-1000不等)
# ITEM_PIPELINES = {
#    "Baidu.pipelines.BaiduPipeline": 300,
# }

10、设置保存日志文件及级别

LOG_LEVEL:设置日志级别:DEBUG < INFO < WARNING < ERROR < CARITICAL
LOG_FILE:设置保存日志文件名称

python"># 设置日志级别:DEBUG < INFO < WARNING < ERROR < CARITICAL
LOG_LEVEL = 'INFO'
# 保存日志文件
LOG_FILE = 'KFC.log'

11、设置数据导出编码格式

FEED_EXPORT_ENCODING:设置数据导出的编码"utf-8" “gb18030”

python">FEED_EXPORT_ENCODING = "utf-8" # 设置数据导出的编码"utf-8" "gb18030"

12、定义MySQL数据库相关变量

MYSQL_HOST:服务器
MYSQL_USER:用户名
MYSQL_PWD:密码
MYSQL_DB:表
CHARSET:编码

python"># 定义MySQL数据库的相关变量
MYSQL_HOST = 'xxxxxxxxx'
MYSQL_USER = 'xxxx'
MYSQL_PWD = 'xxxxxx'
MYSQL_DB = 'xxxxx'
CHARSET = 'utf8'

13、定义MangoDB数据库相关变量

MANGO_HOST:服务器
MANGO_PORT:端口号
MANGO_DB:表
MANGO_SET:编码

python"># 定义MangoDB相关变量
MANGO_HOST = 'xxxxxxxx'
MANGO_PORT = 'xxxxx'
MANGO_DB = 'xxxxx'
MANGO_SET = 'carset'

http://www.niftyadmin.cn/n/232026.html

相关文章

MongoDB实现---存储机制

储存 GridFS机制 GridFS&#xff1a;将大文件分隔成多个小文档存放&#xff0c;这样我们能够有效的保存大文档&#xff0c;而且解决了BSON对象有限制的问题&#xff1b;通过两个集合实现&#xff1a;两个集合分别存储存储实际数据和存储文件的元数据&#xff1a; 元数据文件&…

从界面设计谈系统的贯穿性

系统的贯穿性&#xff1f; 在日常的开发中。单个模块之间的编码和设计起来相对比较简单。但是作为“软件工程”中的一个环节&#xff0c;系统的贯穿性往往被忽视。 现在系统关于贯穿性存在的问题 开发过程往往按照模块划分&#xff0c;分为不同的人开发。针对开发的者来说&a…

Java中有了equals(),为什么还有“==“

背景&#xff1a;Java中“一切皆是对象”&#xff0c;为什么还有非对象的“”&#xff1f; 在Java语言假设我们只进行OOP&#xff0c;所以Java代码都是由一个接着一个的类组成的。那么&#xff0c;对象之间比较&#xff0c;用equals()就可以了。 可为什么“”在代码随处可见呢…

性能测评:腾讯云轻量2核4G5M服务器CPU内存带宽流量系统盘

2核4G云服务器可以选择腾讯云轻量应用服务器&#xff0c;自带5M公网带宽&#xff0c;5M带宽下载速度峰值可达640KB/秒&#xff0c;系统盘为60GB SSD盘&#xff0c;每月500GB流量包&#xff0c;折合每天16GB流量&#xff0c;2核4G5M轻量服务器一年168、198元15个月、三年628元&a…

神器集合!这12个免费工具可以让您的工作更高效

好的工具&#xff0c;能够帮助我们更高效地完成工作&#xff0c;节省时间和精力; 节省出更多的摸鱼时间&#xff01; 本文将介绍 12 款绝佳的免费效率工具&#xff0c;这些工具可以让你事半功倍&#xff0c;提高工作效率。无论你是一名程序员、设计师、学生还是白领&#xff0c…

模型优势缺陷整理

&#xff08;1&#xff09;BERT 1. 计算资源消耗&#xff1a;bert模型是一个相对较大的模型&#xff0c;具有数亿个参数。因此&#xff0c;为了训练和使用bert模型&#xff0c;需要大量的计算资源和时间。 2. 学习不足问题&#xff1a;尽管bert模型在大规模语料库上进行了预训…

亚马逊云科技高效部署AIGC,帮助游戏企业减轻60%原画设计成本

AIGC(Artificial Intelligence Generated Content)是一种利用人工智能模型&#xff0c;根据给定的主题、关键词、格式、风格等条件&#xff0c;自动生成各种类型的文本、图像、音频、视频等内容的新型人工智能技术。随着其在全球范围内的爆火&#xff0c;让一众游戏企业闻机而动…

央媒报道的长与短

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体 胡老师。 在最近的媒体服务中&#xff0c;遇到一个问题&#xff0c;与大家讨论下&#xff0c;很多媒体特别是央媒&#xff0c;在活动报道中不会完全按照新闻稿通稿的内容去报道&#xff0c;有的会根…