爬虫 cookies 操作

爬虫 cookies 操作

requests

import requests
from requests.cookies import RequestsCookieJar
session = requests.session()
driver_cookies = [{'domain': 'web.immomo.com', 'httpOnly': False, 'name': '111', 'path': '/', 'secure': False, 'value': '111'}]
# 添加 cookie
cookies = RequestsCookieJar()
for i in driver_cookies:
    cookies.set(name=i["name"], value=i["value"], domain=i["domain"])
session.cookies = cookies
# 获取 cookie
session.cookies.get_dict()

urllib

import urllib.parse
import urllib.request
headers = {
                "accept": "",
                "accept-encoding": "",
                "accept-language": "",
                "content-type": "",
                "origin": "",
                "user-agent": "",
        }
driver_cookies = [{'domain': 'web.immomo.com', 'httpOnly': False, 'name': '111', 'path': '/', 'secure': False, 'value': '111'}]
for i in driver_cookies:
    cookie = cookie + i["name"] + i["value"] + ";"
param = {"param": {"key": "value"}}
# 添加 cookie
headers["cookie"] = cookie
data = bytes(urllib.parse.urlencode(param=param, encoding="utf-8"))
req = urllib.request.Request(url=url, data=data, headers=headers, method="POST")
response = urllib.request.urlopen(req, context=ssl.SSLContext(ssl.PROTOCOL_SSLv23))

selenium

from selenium import webdriver
opt = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=opt, executable_path=path)
# 获取 cookie
driver_cookies = driver.get_cookies()
cookies = [{'domain': 'web.immomo.com', 'httpOnly': False, 'name': '111', 'path': '/', 'secure': False, 'value': '111'}]
# 添加 cookie
for cookie in cookies:
    driver.add_cookie(cookie_dict=cookie)
# 删除 cookie
driver.delete_all_cookies()

scrapy

三种方式

  • settings.py

    当COOKIES_ENABLED是注释的时候scrapy默认没有开启cookie

    当COOKIES_ENABLED没有注释设置为False的时候scrapy默认使用了settings里面的cookie

    当COOKIES_ENABLED设置为True的时候scrapy就会把settings的cookie关掉,使用自定义cookie

    • 将 settings.py 中的 COOKIES_ENABLED = False 解注释

      在 DEFAULT_REQUEST_HEADERS 中添加 cookie

    • 将 settings.py 中的 COOKIES_ENABLED = False 改为 True

      需要在 请求中加入 cookie

  • 在中间键 middlewares.py 中的 DownloaderMiddleware 中添加 cookie

    在 DownloaderMiddleware 类的 process_request() 方法中添加 cookie

    request.cookies = {
        "key1": "value",
        "key2": "value"
    }
    

  • 重写 start_requests() 方法

    class GaokaoSpider(scrapy.Spider):
        def start_requests(self):
            cookie = {
                "key1": "value",
                "key2": "value"
            }
            yield scarapy.Reqeust(url=url, headers=headers, cookies=cookies, callback=self.parse)
    

    将 settings.py 中的 COOKIE_ENABLED 设置为 True

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值