关于 scrapy 中 COOKIES_ENABLED 设置

news/2024/7/7 21:32:10

在 Scrapy 框架中,COOKIES_ENABLED = True 时,除了可以在 Request 对象中手动设置 cookies 以外,还可以通过修改 DEFAULT_REQUEST_HEADERS 来全局地为每个请求设置 cookies。以下是一个包含这一信息的博客笔记:


Scrapy 爬虫中 Cookies 的全局和局部设置

Scrapy 作为一个灵活的爬虫框架,提供了多种方式来管理 HTTP cookies,以适应不同的爬取场景。其中,COOKIES_ENABLED 设置和 DEFAULT_REQUEST_HEADERS 是控制 cookies 行为的重要配置项。以下是详细的配置方法:

1. COOKIES_ENABLED = False
  • 作用:禁用 Scrapy 的 cookies 处理。每个请求都不会携带或接收 cookies,视为独立无关的会话。

  • 适用场景:适用于网站不需要 cookies 来追踪用户状态或者爬虫需要避免被追踪的情况。但可以自己设置cookie

  • 全局设置 Cookies:当 COOKIES_ENABLED = False 在 Scrapy 框架中设置时,Scrapy 将不会处理任何与 cookies 相关的操作。这意味着 Scrapy 不会自动发送或接收任何 cookies,并且也不会保留在会话中的 cookies 状态。然而,这并不影响通过 DEFAULT_REQUEST_HEADERS 设置的其他 HTTP 头部信息, 并且如果有需要可以在这里手动设置cookie

DEFAULT_REQUEST_HEADERS = {
   "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
   "Accept-Language": "en",
   "Cookie": "sessionid=xyz; csrftoken=abc"  # 全局cookie设置
}
2. COOKIES_ENABLED = True
  • 作用:启用 cookies 后,Scrapy 将自动处理 cookies,可以在请求之间保持状态,如登录信息、会话标识等。
  • 局部设置 Cookies:可以在单个 Request 对象中手动设置 cookies,适用于需要为特定请求定制 cookies 的场景。
yield scrapy.Request(
    url='http://example.com',
    cookies={'example_cookie': 'value'},  # 手动设置的cookie
)
3. 注释掉 COOKIES_ENABLED

作用:如果你在配置文件中注释掉了 COOKIES_ENABLED 设置,Scrapy 将会使用默认配置,即 COOKIES_ENABLED = True。
表现:爬虫行为将会自动处理 cookies,与显式设置为 True 的行为一致。

总结

在 Scrapy 中灵活运用 COOKIES_ENABLEDDEFAULT_REQUEST_HEADERS 可以有效管理爬虫的 cookies 行为。无论是全局设置还是局部定制,合理配置 cookies 是确保爬虫对目标网站友好交互的关键。理解并应用这些配置可以帮助你提高爬虫的效率和适应性,特别是在面对复杂网站时。



http://lihuaxi.xjx100.cn/news/1894505.html

相关文章

谷歌Gemini API 应用(一):基础应用

前两天谷歌发布了旗下Gemini模型的API访问接口,今天我们来介绍一下Gemini API的基础应用,本次发布的是api访问接口对所有人免费开放,但有一些限制,比如每分钟限制60次访问,个人调用api接口所使用的数据将会被谷歌采集用…

Python脚本完成post接口测试的实例

一个post类型的接口怎么编写脚本实现 1、打开网页,在fiddler上获取到接口的URL 2、用Python的requests库实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import requests new_url"http://10.31.143.2:8989/system/systemOrgan/list" params {"access_to…

Netty介绍

1. Netty介绍 是一个异步的、基于事件驱动的网络应用框架,用以开发高性能,高可靠性的网络io程序。Netty主要针对在TCP协议下,面向clients端的高并发应用,或者peer-to-peer场景下大量数据持续传输的应用。Netty本质上是一个NIO框架…

2023年中国算力租赁行业研究报告

第一章 行业概况 1.1 定义 算力租赁是一种新兴的服务模式,旨在为企业和研究机构提供灵活、高效的计算资源。在这个模式中,“算力”指的是对数据的计算能力,包括处理速度、数据存储和网络传输等方面的能力。“租赁”则是指通过将计算能力、存…

第22节: Vue3 可写计算

在UniApp中使用Vue3框架时&#xff0c;你可以使用可写计算属性来封装复杂的计算逻辑&#xff0c;并将结果保存到一个响应式引用对象中&#xff0c;以便在其他地方使用。 下面是一个示例&#xff0c;演示了如何在UniApp中使用Vue3框架使用可写计算&#xff1a; <template&g…

Vue2面试题:说一下路由模式hash和history的区别?

在单页面应用SPA中&#xff0c;路由描述的是URL与视图之间的映射关系&#xff0c;这种映射是单向的&#xff0c;即URL变化引起视图更新&#xff08;无需刷新页面&#xff09;。 1、hash模式 原理&#xff1a; 用 url #后面的hash值 来模拟一个完整的url&#xff0c;直接刷新…

i春秋云镜之Initial

首先拿到目标IP&#xff1a;39.99.156.72 通过Fscan进行扫描发现存在Thinkphp RCE漏洞。 ./fscan_amd64 -h 39.99.156.72然后通过利用工具进行RCE。 我们进行getshell之后通过蚁剑进行连接。 反弹shell并转换成python 交互式shell。 rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/b…

【Flink on k8s】- 15 - 将 flink on yarn 迁移到 flink on k8s

目录 1、集群现状 2、与 Flink on yarn 对比 2.1 Flink on yarn 的一些痛点 2.2 Flink on k8s 的一些优点