在用python 写爬虫的时候,经常需要获取cookies,然后才能开始其他的一起爬取操作。这里整理下,网上一些的资料。在这里我们以豆瓣网 https://accounts.douban.com/passport/login为例。

方法1:python3+requests库获取:

import requests
from requests.cookies import RequestsCookieJarheaders = {'Host': 'accounts.douban.com','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Accept-Encoding': 'gzip, deflate, br','Connection': 'keep-alive'}
request_url = "https://accounts.douban.com/passport/login"
res = requests.get(request_url, headers=headers)status_code = res.status_code
res_header = res.headers
res_cookies = res.cookies
cookie1111 = res.cookies.get_dict()                             # 格式化 字典形式输出
cookie2222 = requests.utils.dict_from_cookiejar(res_cookies)    # 格式化 字典形式输出
for cookie in res_cookies:print(cookie.name+"\t"+cookie.value)print("响应状态码:", status_code)
print("响应请求请求头:", res_header)
print("响应cookies:", res_cookies)
print("格式化cookie1111 :", cookie1111)
print("格式化cookie2222 :", cookie2222)

输出结果:

响应状态码: 200
响应请求请求头: {'Date': 'Wed, 22 Jul 2020 07:41:04 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=30', 'Vary': 'Accept-Encoding, Accept-Encoding', 'X-Xss-Protection': '1; mode=block', 'X-Douban-Mobileapp': '0', 'Expires': 'Sun, 1 Jan 2006 01:00:00 GMT', 'Pragma': 'no-cache', 'Cache-Control': 'must-revalidate, no-cache, private', 'X-Frame-Options': 'SAMEORIGIN', 'Set-Cookie': 'bid=tGBxkXjx3OI; Expires=Thu, 22-Jul-21 07:41:04 GMT; Domain=.douban.com; Path=/', 'X-DOUBAN-NEWBID': 'tGBxkXjx3OI', 'X-DAE-App': 'accounts', 'X-DAE-Instance': 'default', 'Server': 'dae', 'Strict-Transport-Security': 'max-age=15552000', 'X-Content-Type-Options': 'nosniff', 'Content-Encoding': 'br'}
响应cookies: <RequestsCookieJar[<Cookie bid=tGBxkXjx3OI for .douban.com/>]>
格式化cookie1111 : {'bid': 'tGBxkXjx3OI'}
格式化cookie2222 : {'bid': 'tGBxkXjx3OI'}
bid tGBxkXjx3OI

方法2:使用response headers的set_cookie

set_cookie = res.headers['Set-Cookie']
print("set_cookie:", set_cookie)for cookie in res.headers['Set-Cookie'].split(";"):key = cookie.split('=')[0]value = cookie.split('=')[1]print(key, value)

运行结果:

set_cookie: bid=sH5N2LFyPog; Expires=Thu, 22-Jul-21 07:55:11 GMT; Domain=.douban.com; Path=/
bid sH5N2LFyPog
Expires Thu, 22-Jul-21 07:55:11 GMT
Domain .douban.com
Path /

如果要设置cookies,可以这样做:

import requests
from requests.cookies import RequestsCookieJarcookieJar1 = RequestsCookieJar()
cookieJar2 = RequestsCookieJar()
print(cookieJar1)
for cookie in res.cookies:cookieJar1.set(cookie.name, cookie.value)
print("cookieJar1:", cookieJar1)# 向请求头中添加cookie
res = requests.get(url, headers, cookies=cookieJar1)
# 使用Set-Cookie 获取的cookies比较完整
for cookie in res.headers['Set-Cookie'].split(";"):key = cookie.split('=')[0]value = cookie.split('=')[1]cookieJar2.set(key, value)
print("cookieJar2:", cookieJar2)

运行结果:

<RequestsCookieJar[]>
cookieJar1: <RequestsCookieJar[<Cookie bid=sYSpXToGQ1o for />]>
cookieJar2: <RequestsCookieJar[<Cookie  Domain=.douban.com for />, <Cookie  Expires=Thu, 22-Jul-21 08:01:01 GMT for />, <Cookie  Path=/ for />, <Cookie bid=sYSpXToGQ1o for />]>

方法3:利用selenium 模拟驱动的方式

from selenium import webdriverdriver=webdriver.PhantomJS()
url="https://et.xiamenair.com/xiamenair/book/findFlights.action?lang=zh&tripType=0&queryFlightInfo=XMN,PEK,2018-01-15"
driver.get(url)
# 获取cookie列表
cookie_list=driver.get_cookies()
# 格式化打印cookie
for cookie in cookie_list:cookie_dict[cookie['name']]=cookie['value']

方法4:使用cookielib + http.cookiejar

在python2使用

import cookielib
import urllib2
Url = "https://et.xiamenair.com/xiamenair/book/findFlights.action?lang=zh&tripType=0&queryFlightInfo=XMN,PEK,2018-01-15"
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
resp = urllib2.urlopen(Url)
for index, cookie in enumerate(cj):print '[',index, ']',cookie

python3中使用:

from urllib import request
from http import cookiejar#跳过SSL验证证书
import ssl
#设置忽略SSL验证
ssl._create_default_https_context = ssl._create_unverified_contextif __name__ == '__main__':#声明一个CookieJar对象实例来保存cookiecookie = cookiejar.CookieJar()#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandlerhandler=request.HTTPCookieProcessor(cookie)#通过CookieHandler创建openeropener = request.build_opener(handler)#此处的open方法打开网页response = opener.open('http://www.baidu.com')#打印cookie信息for item in cookie:print('Name = %s' % item.name)print('Value = %s' % item.value)

运行结果:

Name = BAIDUID
Value = 94CCDAFB95C81F517566AAE5796693AC:FG=1
Name = BIDUPSID
Value = 94CCDAFB95C81F515B73F5C9A79CE9BC
Name = H_PS_PSSID
Value =
Name = PSTM
Value = 1595406265
Name = BDSVRTM
Value = 0
Name = BD_HOME
Value = 1

python获取cookies相关推荐

  1. python后台返回cookie_Django框架设置cookies与获取cookies操作详解

    本文实例讲述了Django框架设置cookies与获取cookies操作.分享给大家供大家参考,具体如下: 在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是req ...

  2. python爬虫-selenium模拟登录豆瓣获取cookies给requests使用

    1. selenium如何切换到iframe中操作 import time from selenium import webdriverurl = "https://www.douban.c ...

  3. b站看那个的python_用Python获取B站播放历史记录 !男友居然天天背着我看这些!...

    今天Geek专栏为大家带来 乐聚机器人王松博士的 "用Python获取B站播放历史记录" 最近 B 站出了一个年度报告,统计用户一年当中在 B 站上观看视频的总时长和总个数.过去一 ...

  4. python 获取html js 变量_Python爬虫与反反爬虫实践

    因为要收集数据,所以打算自己撸一个爬虫,期间碰到网站的反爬措施,让我非常头疼,在此记录一下. 基础 爬虫的基础是不需要自己手动通过浏览器访问网页,而是通过程序构造网络请求,获取网站返回的结果.例如使用 ...

  5. python 中cookie_使用Python分析Cookies

    前言 本文的灵感来自于: 正文 本文已豆瓣电影的Cookies为例, 展示了从Cookies的获取, 解析的过程. 我们在浏览器中看到的Cookies大概是这样的: Cookie:bid=hZdgjL ...

  6. 爬虫实战学习笔记_6 网络请求request模块:基本请求方式+设置请求头+获取cookies+模拟登陆+会话请求+验证请求+上传文件+超时异常

    1 requests requests是Python中实现HTTP请求的一种方式,requests是第三方模块,该模块在实现HTTP请求时要比urlib.urllib3模块简化很多,操作更加人性化. ...

  7. 003 python接口 cookies

    /* 时间:2018/09/17 功能:cookie 目录: 一: 概念1 保存2 存储3 时间 4 目的二: 结构三: 查看四: 获取1 url2 header3 body 五: 禅道登录 - co ...

  8. python获取cookie值的方法_Python获取Cookie、设置Cookie的N种方法

    方法一通过python的requests包: import requests url = "https://fanyi.baidu.com" res = requests.get( ...

  9. 获取cookies(pyppeteer)

    在工作时,我需要获取cookies,先就如何获取cookies的过程做个简单的记录 name:cookie键名称 path:cookie路径 HTTP: 表示是否是http read lonly,打钩 ...

最新文章

  1. 中国研制出首款搭载寒武纪AI芯片的人工智能服务器
  2. [Spring] - 读写分离
  3. python struct
  4. 【温故知新】CSS学习笔记(三大特性)
  5. 免费源码赠送之 pwm (vhdl)
  6. linux下kegg注释软件,KEGG功能注释工具 KofamKOALA 安装与使用
  7. 为什么回归问题用MSE?
  8. 现代程序设计 (课程设计中, 征求意见稿)
  9. 爬虫-07-请求过程
  10. 测试网站集群节点的页面访问是否正常
  11. Android入门笔记01
  12. java web分享ppt大纲 -- servlet包
  13. 偶然获得2011高校信息化创新征文大赛鼓励奖
  14. android 快速启动 hibernate,什么是快速启动以及如何在Windows中启用或禁用它 | MOS86...
  15. Call to a member function display() on a non-object。。。。
  16. lr mysql 增删改查_ssh增删改查流程
  17. 2021年计算机保研面试题
  18. 2021最新凡诺免费企业网站管理系统PHP版 v3.4网站源码
  19. Tensorflow读取图片并转换成张量
  20. Python Web开发(四):从零开始创建数据库和表

热门文章

  1. python socket清空接受区_用Python制作只属于你和ta的聊天渠道吧
  2. 201117阶段二SQLite数据库
  3. 编写自适应高度的 textarea
  4. 如何使用验证控件对DropDownList进行验证
  5. 格瑞光电:智慧城市建设的引领者
  6. 导入要素集到SDE数据库的方法以及使用GP工具的许可问题(转载)
  7. 【Todo】Zookeeper系列文章
  8. 06-Java 本地文件操作
  9. jquery post 同步异步总结
  10. MM夏天化妆不掉妆的技巧