我们在使用爬虫的时候,经常会用到cookie进行模拟登陆和访问。在使用urllib库做爬虫,我们需要借助http.cookiejar库中的CookieJar来实现,CookieJar类管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失。
使用cookie管理session步骤是:

  1. 创建CookieJar 对象或其子类的对象,负责处理cookie
  2. 以 CookieJar 对象为参数,创建 urllib.request.HTTPCookieProcessor 对象,该对象负责调用 CookieJar 来管理 cookie
  3. 以 HTTPCookieProcessor 对象为参数,调用 urllib.request.build_opener() 函数创建 OpenerDirector 对象
  4. 使用 OpenerDirector 对象来发送请求,该对象将会通过 HTTPCookieProcessor 调用 CookieJar 来管理 cookie
    下面以上节出错的的爬虫代码为例,来说明CookieJar 的用法
from http import cookiejar
from urllib import request, parseurl = "https://www.lagou.com/jobs/list_python/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput="
data_url = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36","Referer": url
}
data = {"first": "true","pn": str(1),"kd": "python"
}# 创建cookiejar实例对象
cookie_jar = cookiejar.CookieJar()# 根据创建的cookie生成cookie的管理器
handler = request.HTTPCookieProcessor(cookie_jar)# 创建http请求管理器
http_handle = request.HTTPHandler()# 创建https管理器
https_handle = request.HTTPSHandler()# 有了opener,就可以替代urlopen来获取请求了
opener = request.build_opener(handler, http_handle, https_handle)req = request.Request(url, headers=headers)# 正常是用request.urlopen(),这里用opener.open()发起请求,获取cookies
opener.open(req)rep = request.Request(data_url, headers=headers, data=parse.urlencode(data).encode("utf-8"))res = opener.open(rep)
st = res.read().decode("utf-8")
f = open("index.html", "w")
count = f.write(st)f.close()
print(st)
print(count)

执行结果如下所示

通过使用cookies管理,就能真正的模仿用户登录了,

python爬虫之http.CookieJar库相关推荐

  1. python websocket库有什么_常用Python爬虫与Web开发库有哪些?

    Python爬虫和Web开发均是与网页相关的知识技能,无论是自己搭建的网站还是爬虫爬去别人的网站,都离不开相应的Python库,以下是常用的Python爬虫与Web开发库. **1.爬虫库** bea ...

  2. python爬虫之Beautiful Soup库,基本使用以及提取页面信息

    一.Beautiful Soup简介 爬虫正则表达式参考:Python 爬虫正则表达式和re库 在爬虫过程中,可以利用正则表达式去提取信息,但是有些人觉得比较麻烦.因为花大量时间分析正则表达式.这时候 ...

  3. python 爬虫调用 js 的库之 execjs

    python 爬虫调用 js 的库之 execjs 针对现在大部分的网站都是使用 js 加密,js 加载的,并不能直接抓取出来,这时候就不得不使用一些三方类库来执行 js 语句 1. 安装 pip i ...

  4. 从零开始写Python爬虫---1.1 requests库的安装与使用

    什么是爬虫? 爬虫本质上是模拟人浏览信息的过程,只不过他通过计算机来达到快速抓取筛选信息的目的.所以我们想要写一个爬虫,最基本的就是要将我们需要抓取信息的网页原原本本的抓取下来.这个时候就要用到req ...

  5. Python爬虫入门之Urllib库的基本使用

    那么接下来,小伙伴们就一起和我真正迈向我们的爬虫之路吧. 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解 ...

  6. PYTHON 爬虫笔记七:Selenium库基础用法

    知识点一:Selenium库详解及其基本使用 什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium ...

  7. 【Python爬虫】Beautiful Soup库入门

    BeautifulSoup库的安装 安装 pip install beautifulsoup4 测试是否安装成功 Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2 ...

  8. Python爬虫--- 1.2 BS4库的安装与使用

    原文链接https://www.fkomm.cn/article/2018/7/20/17.html Beautiful Soup 库一般被称为bs4库,支持Python3,是我们写爬虫非常好的第三方 ...

  9. python爬虫方向的第三方库_requests 第三方库

    requests 第三方库 官方定义:Requests is the only Non-GMO HTTP library for Python, safe for human consumption. ...

最新文章

  1. php如何返回数据请求数据格式化,PHP以json或xml数据格式返回请求数据的封装代码...
  2. spring中的bean属性相关访问、编辑、转换
  3. 008_TreeSet使用Comparator排序
  4. LCD显示原理和驱动方式介绍
  5. Andriod监听支付宝收款实现个人支付宝支付接口!附安卓App
  6. 深入理解Spark 2.1 Core (十一):Shuffle Reduce 端的原理与源码分析
  7. Linux系统内存管理实验报告,Linux 内存管理 综合实验报告.pdf
  8. LaTex字体、符号汇总
  9. FoneDog Toolkit for Android如何从Android恢复丢失的文件
  10. 进入大厂的面试经验详细总结(P7 拿 offer)
  11. Activity/Fragment最强生命周期总结
  12. makefile中的notdir,wildcard和patsubst
  13. 将银行大写数字转换为纯数字
  14. Latex特殊符号大全(高清)
  15. quartz 整合 postgresql 附带例子
  16. 计算机主机分为什么不同,什么是服务器(服务器和计算机主机之间的区别)
  17. 淘宝天猫商品sku详细信息API接口
  18. 华为“More Bits, Less Watts”新践行
  19. 如何查美国公司的年报
  20. WDM波分复用中什么是C波段、L波段?

热门文章

  1. python进行B站av号和bv号的转换
  2. 如何提高大数据业务系统的性能
  3. python和Pycharm的安装、使用踩坑-用于提取网页的文字
  4. ChatGPT风口下的中外“狂飙”,一文看懂微软、谷歌、百度、腾讯、华为、字节跳动们在做什么?
  5. [01背包] 宠物小精灵之收服(01背包+二维费用背包+思维)
  6. 20个新鲜的和鼓舞人心的电子商务网站
  7. linux常用复制粘贴命令行,技术|使用 xclip 在 Linux 命令行中复制粘贴
  8. 学习3D建模可能遇到的问题?
  9. python items 与 iteritems
  10. html创建关联程序,Win10系统如何在默认程序控制面板中创建关联