跨境网站入口,建设厅施工员证查询网站,项目网格化管理方案,东莞网站制作与网站建设Scrapy配置设置(全网最全#xff09;#xff1a;
背景#xff1a;
之前在做爬虫项目的时候#xff0c;老报错或有问题#xff0c;我看了网上很多文章#xff0c;但是都不是很全面#xff0c;在这里写一篇博客给大家讲讲scrapy文件中的setting.py文件#xff0c;我…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 FalseUA伪装
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_DELAY3 是否启用cookie
COOKIES_ENABLED一个布尔值用于指定是否启用 cookies。默认为 True表示启用我们都知道http是无痕迹的服务器端识别客户端cookie的存在比如一些需要登录的页面我们需要告知我们是谁这是需要用到cookie。当设置为False时Scrapy将不会在请求中携带或处理Cookie信息。这对于需要匿名访问或不需要维护会话状态的爬取任务可能是有用的。
COOKIES_ENABLED:True默认请求头
可以设置默认的请求头。你可以根据需要修改这些请求头包括Accept、Accept-Language等字段以便在发送请求时指定特定的头部信息。
DEFAULT_REQUEST_HEADERS {Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.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_LEVELERROR 扩展
EXTENSIONS启用或禁用扩展可以在这里配置相关扩展。
EXTENSIONS {scrapy.extensions.telnet.TelnetConsole: None,
}自动限速扩展
AUTOTHROTTLE_ENABLED启用或禁用自动限速扩展。自动限速可以根据服务器的负载自动调整爬取速度
AUTOTHROTTLE_ENABLED True缓存
HTTPCACHE_ENABLED启用或禁用HTTP缓存。启用后Scrapy可以缓存已下载的响应下次遇到相同的请求时可以直接使用缓存的响应。
HTTPCACHE_ENABLED True