python获取cookies
在用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相关推荐
- python后台返回cookie_Django框架设置cookies与获取cookies操作详解
本文实例讲述了Django框架设置cookies与获取cookies操作.分享给大家供大家参考,具体如下: 在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是req ...
- python爬虫-selenium模拟登录豆瓣获取cookies给requests使用
1. selenium如何切换到iframe中操作 import time from selenium import webdriverurl = "https://www.douban.c ...
- b站看那个的python_用Python获取B站播放历史记录 !男友居然天天背着我看这些!...
今天Geek专栏为大家带来 乐聚机器人王松博士的 "用Python获取B站播放历史记录" 最近 B 站出了一个年度报告,统计用户一年当中在 B 站上观看视频的总时长和总个数.过去一 ...
- python 获取html js 变量_Python爬虫与反反爬虫实践
因为要收集数据,所以打算自己撸一个爬虫,期间碰到网站的反爬措施,让我非常头疼,在此记录一下. 基础 爬虫的基础是不需要自己手动通过浏览器访问网页,而是通过程序构造网络请求,获取网站返回的结果.例如使用 ...
- python 中cookie_使用Python分析Cookies
前言 本文的灵感来自于: 正文 本文已豆瓣电影的Cookies为例, 展示了从Cookies的获取, 解析的过程. 我们在浏览器中看到的Cookies大概是这样的: Cookie:bid=hZdgjL ...
- 爬虫实战学习笔记_6 网络请求request模块:基本请求方式+设置请求头+获取cookies+模拟登陆+会话请求+验证请求+上传文件+超时异常
1 requests requests是Python中实现HTTP请求的一种方式,requests是第三方模块,该模块在实现HTTP请求时要比urlib.urllib3模块简化很多,操作更加人性化. ...
- 003 python接口 cookies
/* 时间:2018/09/17 功能:cookie 目录: 一: 概念1 保存2 存储3 时间 4 目的二: 结构三: 查看四: 获取1 url2 header3 body 五: 禅道登录 - co ...
- python获取cookie值的方法_Python获取Cookie、设置Cookie的N种方法
方法一通过python的requests包: import requests url = "https://fanyi.baidu.com" res = requests.get( ...
- 获取cookies(pyppeteer)
在工作时,我需要获取cookies,先就如何获取cookies的过程做个简单的记录 name:cookie键名称 path:cookie路径 HTTP: 表示是否是http read lonly,打钩 ...
最新文章
- 中国研制出首款搭载寒武纪AI芯片的人工智能服务器
- [Spring] - 读写分离
- python struct
- 【温故知新】CSS学习笔记(三大特性)
- 免费源码赠送之 pwm (vhdl)
- linux下kegg注释软件,KEGG功能注释工具 KofamKOALA 安装与使用
- 为什么回归问题用MSE?
- 现代程序设计 (课程设计中, 征求意见稿)
- 爬虫-07-请求过程
- 测试网站集群节点的页面访问是否正常
- Android入门笔记01
- java web分享ppt大纲 -- servlet包
- 偶然获得2011高校信息化创新征文大赛鼓励奖
- android 快速启动 hibernate,什么是快速启动以及如何在Windows中启用或禁用它 | MOS86...
- Call to a member function display() on a non-object。。。。
- lr mysql 增删改查_ssh增删改查流程
- 2021年计算机保研面试题
- 2021最新凡诺免费企业网站管理系统PHP版 v3.4网站源码
- Tensorflow读取图片并转换成张量
- Python Web开发(四):从零开始创建数据库和表