一、cookie的保存与读取

1.cookie的保存-FileCookie.Jar

  1. from urllib import request,parse
  2.  
  3. from http import cookiejar
  4.  
  5. #创建cookiejar实例
  6.  
  7. filename = "cookie.txt"
  8.  
  9. cookie = cookiejar.MozillaCookieJar(filename)
  10.  
  11. #生成cookie的管理器
  12.  
  13. cookie_handler = request.HTTPCookieProcessor(cookie)
  14.  
  15. #创建http请求管理器
  16.  
  17. http_handler = request.HTTPHandler()
  18.  
  19. #生成https管理器
  20.  
  21. https_handler = request.HTTPHandler()
  22.  
  23. #创建请求管理器
  24.  
  25. opener = request.build_opener(http_handler,https_handler,cookie_handler)
  26.  
  27.  
  28. def login():
  29.  
  30. """
  31.  
  32. 负责初次登录
  33.  
  34. 需要输入用户名密码
  35.  
  36. :return:
  37.  
  38. """
  39.  
  40. url = "http://www.renren.com/PLogin.do"
  41.  
  42. data = {
  43.  
  44. "email":"1215217867@qq.com",
  45.  
  46. "password":""
  47.  
  48. }
  49.  
  50. #把数据进行编码
  51.  
  52. data = parse.urlencode(data)
  53.  
  54. #创建一个请求对象
  55.  
  56. req = request.Request(url,data=data.encode())
  57.  
  58. #使用opener发起请求
  59.  
  60. rep = opener.open(req)
  61.  
  62. #保存cookie到文件
  63.  
  64. #ignore_discard表示及时cookie将要被丢弃也要保存下来
  65.  
  66. #ignore_expire表示如果该文件中cookie即使已经过期,保存
  67.  
  68. cookie.save(ignore_discard=True,ignore_expires=True)
  69.  
  70.  
  71. def getHomePage():
  72.  
  73. url = "http://www.renren.com/965187997/profile"
  74.  
  75. #如果已经执行了login函数,则opener自动已经包含相应的cookie值
  76.  
  77. rsp = opener.open(url)
  78.  
  79.  
  80. html = rsp.read().decode()
  81.  
  82. with open("rsp.html","w") as f:
  83.  
  84. f.write(html)
  85.  
  86.  
  87. if __name__ == "__main__":
  88.  
  89. """
  90.  
  91. 执行完login之后,会得到授权之后的cookie
  92.  
  93. 我们尝试把cookie打印出来
  94.  
  95. """
  96.  
  97. login()
  98.  
  99. getHomePage()

2.cookie的读取

  1. from urllib import request,parse
  2.  
  3. from http import cookiejar
  4.  
  5. #创建cookiejar实例
  6.  
  7. cookie = cookiejar.MozillaCookieJar()
  8.  
  9. cookie.load("cookie.txt",ignore_discard=True,ignore_expires=True)
  10.  
  11.  
  12. #生成cookie的管理器
  13.  
  14. cookie_handler = request.HTTPCookieProcessor(cookie)
  15.  
  16. #创建http请求管理器
  17.  
  18. http_handler = request.HTTPHandler()
  19.  
  20. #生成https管理器
  21.  
  22. https_handler = request.HTTPHandler()
  23.  
  24. #创建请求管理器
  25.  
  26. opener = request.build_opener(http_handler,https_handler,cookie_handler)
  27.  
  28.  
  29. def login():
  30.  
  31. """
  32.  
  33. 负责初次登录
  34.  
  35. 需要输入用户名密码
  36.  
  37. :return:
  38.  
  39. """
  40.  
  41. url = "http://www.renren.com/PLogin.do"
  42.  
  43. data = {
  44.  
  45. "email":"1215217867@qq.com",
  46.  
  47. "password":""
  48.  
  49. }
  50.  
  51. #把数据进行编码
  52.  
  53. data = parse.urlencode(data)
  54.  
  55. #创建一个请求对象
  56.  
  57. req = request.Request(url,data=data.encode())
  58.  
  59. #使用opener发起请求
  60.  
  61. rep = opener.open(req)
  62.  
  63. #保存cookie到文件
  64.  
  65. #ignore_discard表示及时cookie将要被丢弃也要保存下来
  66.  
  67. #ignore_expire表示如果该文件中cookie即使已经过期,保存
  68.  
  69. cookie.save(ignore_discard=True,ignore_expires=True)
  70.  
  71.  
  72. def getHomePage():
  73.  
  74. url = "http://www.renren.com/965187997/profile"
  75.  
  76. #如果已经执行了login函数,则opener自动已经包含相应的cookie值
  77.  
  78. rsp = opener.open(url)
  79.  
  80.  
  81. html = rsp.read().decode()
  82.  
  83. with open("rsp.html","w") as f:
  84.  
  85. f.write(html)
  86.  
  87.  
  88.  
  89. if __name__ == "__main__":
  90.  
  91. """
  92.  
  93. 执行完login之后,会得到授权之后的cookie
  94.  
  95. 我们尝试把cookie打印出来
  96.  
  97. """
  98.  
  99. # login()
  100.  
  101. getHomePage()

改代码读取了保存的cookie文件,并且​访问网页成功。

二、SSL

1.什么是SSL

(1)SSL证书就是指遵守SSL安全套阶层协议的服务器数字证书(SercureSocketLayer)

(2)该证书是由美国网景公司开发

(3)CA(CertifacateAuthority)是数字证书认证中心,是发放、管理、废除数字证书的收信人的​第三方机构。

(4)遇到不信任的SSL证书,可以用代码进行忽略掉

  1. from urllib import request
  2.  
  3. #导入python ssl处理模块
  4.  
  5. import ssl
  6.  
  7. #利用非认证上下文环境替换认证的下文环境
  8.  
  9. ssl._create_default_https_context = ssl._create_unverified_context
  10.  
  11. url = "https://www.12306.cn/mormhweb/"
  12.  
  13. rsp = request.urlopen(url)
  14.  
  15.  
  16. html = rsp.read().decode()
  17.  
  18.  
  19. print(html)

三、源码

Reptitle7_1_SaveCookie.py

Reptitle7_2_LoadCookie.py

Reptitle7_3_SSLAnalysis.py

https://github.com/ruigege66/PythonReptile/blob/master/Reptitle7_1_SaveCookie.py

https://github.com/ruigege66/PythonReptile/blob/master/Reptitle7_2_LoadCookie.py

https://github.com/ruigege66/PythonReptile/blob/master/Reptitle7_3_SSLAnalysis.py

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Python爬虫连载7-cookie的保存与读取、SSL讲解的更多相关文章

  1. Python爬虫入门:Cookie的使用

    大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在 ...

  2. Python爬虫入门之Cookie的使用

    本节我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要 ...

  3. Python爬虫:设置Cookie解决网站拦截并爬取蚂蚁短租

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Eastmount PS:如有需要Python学习资料的小伙伴可以加 ...

  4. 芝麻HTTP:Python爬虫入门之Cookie的使用

    为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓 ...

  5. Python爬虫连载1-urllib.request和chardet包使用方式

    一.参考资料 1.<Python网络数据采集>图灵工业出版社 2.<精通Python爬虫框架Scrapy>人民邮电出版社 3.[Scrapy官方教程](http://scrap ...

  6. Python爬虫连载5-Proxy、Cookie解析

    一.ProxyHandler处理(代理服务器) 1.使用代理IP,是爬虫的常用手段 2.获取代理服务器的地址: www.xicidaili.com www.goubanjia.com 3.代理用来隐藏 ...

  7. Python爬虫基础之Cookie

    一.Cookie会话 简单地说,cookie就是存储在用户浏览器中的一小段文本文件.Cookies是纯文本形式,它们不包含任何可执行代码.一个Web页面或服务器告之浏览器来将这些信息存储并且基于一系列 ...

  8. Python爬虫连载9-JS加密之“盐”​、ajax请求

    一.JS加密之“盐”​ 1.salt属性“盐":多用于密码学,比如我们的银行卡是六位密码,但是实际上在银行的系统里,我们输入密码后,会给原始的密码添加若干字符,形成更加难以破解的密码.这个过 ...

  9. Python爬虫连载6-cookie深入使用实例化实现自动登录

    一.使用cookie登录 1.直接把cookie复制下去,然后手动放到请求头 2.http模块包含一些关于cookie的模块,通过他们我们可以自动使用cookie (1)cookieJar 管理存储c ...

随机推荐

  1. 梯度下降算法&线性回归算法

    **机器学习的过程说白了就是让我们编写一个函数使得costfunction最小,并且此时的参数值就是最佳参数值. 定义 假设存在一个代价函数 fun:\(J\left(\theta_{0}, \the ...

  2. python中的strip()方法

    python中字符串str的strip()方法 str.strip()就是把字符串(str)的头和尾的空格,以及位于头尾的\n \t之类给删掉. 例1: str=" python " ...

  3. 【剑指Offer】47、求1+2+3+...+n

    题目描述: 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 题解:递归实现/利用Math //利用短路 ...

  4. 题解 CF171A 【Mysterious numbers - 1】

    又是愚人节题目qwq-- 说一下题意吧: 把第1个数翻转后加第二个数 具体思路: 1.定义变量,进行输入 int a,b; cin>>a>>b; 2.定义一个变量c,作为存储第 ...

  5. 共享v2射线局域网http代理方法

    问题描述 默认v节点大部分是socks代理,实际使用过程中存在以下问题: 部分浏览器无法支持socks需要走http代理. 局域网内其他设备(手机.PS4等)需要配置代理. 解决方法 1.在PC托盘图 ...

  6. vue学习指南:第十三篇(详细) - Vue的 路由 第三篇 ( 路由的缓存 )

    路由的缓存 路由缓存是 Vue组件优化的一个重要方法 为什么实现路由缓存? 为了 组件间 相互切换不会重复加载数据,影响用户体验,我们通常需要将组件的数组实现缓存,当我们点过来,在点的时候会再次发送 ...

  7. mysql5.6创建账户不能本地登录

    1.通过xshell连接linux,命令登录mysql 2.创建一个新的库(其实创建不创建都可以) 3.创建账号权限 创建账号luffy 密码luffy 针对库luffy所有权限,允许任何人远程登录 ...

  8. 虚拟机中CentOS 6.5 添加扩展分区

    此扩展方法要求支持LVM 1.更改虚拟机配置 虚拟机->设置->硬盘->扩展磁盘容量 fdisk -l 查看,发现硬盘空间变大了 [root@thj Desktop]# fdisk ...

  9. 巨杉Tech | 微服务趋势下的数据库设计与应用简析

    周五(7月12日)巨杉数据库参与了由得到App主办八里庄技术沙龙活动,分享主题是关于分布式数据库架构与实战. 以下就是根据巨杉数据库现场分享的内容进行的分享实录整理. 巨杉数据库简介 巨杉,专注新一代 ...

  10. C#通过属性名字符串获取、设置对象属性值

    之前理工项目从这个博客找到了相对应的方法:C#通过属性名字符串获取.设置对象属性值 https://www.cnblogs.com/willingtolove/p/12198871.html