python 爬虫 cookie 的保存和加载

news/2024/7/19 11:05:31 标签: 爬虫, python

为什么80%的码农都做不了架构师?>>>   hot3.png

相关库

Cookie (py2) 等于 http.cookie (py3)
cookielib (py2) 等于 http.cookiejar (py3)

python3 处理 cookie

  • 保存到变量
import http.cookiejar, urllib.request
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcesser(cj))
r = opener.open('http://douban.com')
# 此时, cookie 已经保存在 cj 中了
for i in cj:
    print(i.name, i.value)
输出:
bid "a3YOzYxKBc9"
ll "219731"
  • 保存到文件
import http.cookiejar, urllib.request
cj = http.cookiejar.MozillaCookieJar('cookie.txt')
# cj = http.cookiejar.LWPCookieJar() # 可读性更好
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcesser(cj))
r = opener.open('http://douban.com')
cj.save() # 也可以在这里指定保存的文件名 cj.save('new_cookie.txt')
# save() 可设置过期参数 ignore_discard=True: 即使将被丢弃也保存. ignore_expires=True: 即使过期也保存
# cj.save(ignore_discard=True, ignore_expires=True)
  • 从文件加载 cookie
import http.cookiejar, urllib.request
cj = http.cookiejar.MozillaCookieJar()
cj.load('cookie.txt')
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
req = urllib.request.Request('http://douban.com')
r = opener.open(req)
# 上两句可以这样
# r = opener.open('http://douban.com')

python2 处理 cookie

  • 保存到变量
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcesser(cj))
r = opener.open('http://douban.com')

requests 库处理 cookie

  • 响应中的cookie
>>> r = requests.get('http://douban.com')
>>> r.cookies.items()
[('bid', '"/cMAIpJIhm0"'), ('ll', '"178229"')]
  • 发送 cookie
>>> url = 'http://httpbin.org/cookies'
>>> cookies = dict(cookies_are='working')

>>> r = requests.get(url, cookies=cookies)
>>> r.text
'{"cookies": {"cookies_are": "working"}}'
  • 通过会话Session保持cookie:
s = requests.Session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")

print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'

s.cookies['cookie1'] = 'a'
s.cookies['cookie2'] = 'b'
  • 保存到文件, 从文件加载 requests.cookies.cookielib 相当于 http.cookiejar (py3) 和 cookielib (py2) requests.cookies.RequestsCookieJar 相当于 http.cookiejar.CookieJar (py3) 和 cookielib.CookieJar (py2)
将一个Session实例的cookies属性设置赋值成 一个 CookieJar 实例
import http.cookiejar
s = requests.session  # 或 s = requests.Session()
s.cookies = http.cookiejar.LWPCookieJar('mycookie.txt')
s.get('http://douban.com')
s.save(ignore_expires=True, ignore_discard=True)  # 已保存到 mycookie.txt
s.cookies.clear()   # 清除
s.cookies.load('mycookie.txt') # 从文件加载
# s.cookies.revert() # 这个方法等于先清除后加载

python3 http.cookiejar
python2 cookielib
参考1
参考2
参考3
参考4
requests API文档

转载于:https://my.oschina.net/sukai/blog/662046


http://www.niftyadmin.cn/n/1448840.html

相关文章

jdbc系列之 ACCESS(转)

package zmsjdbc;import java.sql.*;import java.sql.ResultSet;/** * 建一个ACCESS数据库 db1 有字段1 id 字符型, 2 name 字符型 */public class access1{public static void main(String[] args) { access1 xnew access1(); String str"select * from test1";if (…

android开发实践之1:安装部署环境设置

一、安装包 1.andorid studio; 2.Java sdk; 二、操作步骤 1.安装Java SDK; 2.安装android studio; 3.创建Helloword工程并运行;遇到问题: 三、问题及解决方案 3.1.HAXM 运行android sdk: Extras->HAXM勾…

uva 1397 - The Teacher's Side of Math(高斯消元)

题目链接:uva 1397 - The Teachers Side of Math 题目大意:给出一个方程的解xa1/mb1/n,求原方程(给出系数即可) 解题思路:因为方程肯定等于0,所以对于各个系数ax/mby/n都会等于0,于是可以根据这…

mysql学习笔记(二)

-- mysql关系型数据库:C/S结构软件(连接认证,发送SQL指令,服务器处理指令返回结果,客户端接收结果解析结果) -- mysql服务器端对象:DBMS->Database->Table->fields-- 数据类型 -- 所谓的数据类型:对数据进行统一的分类 -…

使用MFC编写FTP程序(转)

1、生成CInternetSession变量。 CInternetSession ses;    2、打开FTP连接。    CFtpConnection* pFTPses.GetFtpConnection("ftp.microsoft.com","user","password",port,FALSE); 3、打开文件。 CInternetFile* pFpFTP->OpenFile("…

如何安装并测试MySQL(转)

如何安装并测试MySQL: PHPMySQLLinux目前已逐渐成为小型web服务器的一种经典组合。在Windows环境下构筑和调试MySQL数据库是许多网站开发者的一种首选。本人在Windows98环境下初学MySQL,现将学习过程与经验总结出来供大家参考。 1、下载mysql-3.23.35-wi…

const与#define的区别

2019独角兽企业重金招聘Python工程师标准>>> 1、const (1)为什么需要const成员函数? C中常用:“ #define 变量名 变量值”定义一个值替代,然而却有个致命缺点:缺乏类型检测机制,这样预处理在C中…

uva 1564 - Widget Factory(高斯消元+逆元)

题目链接:uva 1564 - Widget Factory 题目大意:n种零件,m次工作日程,零件序号从1到n,给出m次工作日程的信息,x,s,e,表示生产了x个零件,从星期s开始到星期e&am…