哎,好久没有学习爬虫了,现在想要重新拾起来。发现之前学习爬虫有些粗糙,竟然连requests中添加cookies都没有掌握,惭愧。废话不宜多,直接上内容。
我们平时使用requests获取网络内容很简单,几行代码搞定了,例如:
import requests res=requests.get("https://cloud.flyme.cn/browser/index.jsp") print res.content
你没有看错,真的只有三行代码。但是简单归简单,问题还是不少的。
首先,这里的请求只是get方法,并且没有解决cookies的问题。
然后就是这里并没有解决乱码的问题。(乱码是python中的变态点)其实,在requests的get方法中添加cookies的方法不难 可以这样子:
res=requests.get("https://cloud.flyme.cn/browser/index.jsp",cookies=cookies)
我们所面临的问题是,如何构造这里的cookies。
这里的cookies是一个字典格式的数据。
平时我们浏览网页的时候,在审查元素中可以查看到所访问网页的cookies内容,大都是这样子的:
sn_openNetBySms=%23810EBMA3TE53; sn_map=810EBMA3TE53; DSESSIONID=f1987887-3d1d-4a85-ad75-c6270e588290; JSESSIONID=; _uid=; _keyLogin=; _rmtk=; _uticket=ns_0393027c2f9f686e3499e8ebb8d1d622; _ckk=ns_397a592791064029bf1336eff1cf516e; ucuid=8a135520affa423584307f6e2c210f02; _domain=cloud.flyme.cn; _islogin=true; lang=zh_CN; JSESSIONID=1gmfzynp0ns6s1u6a92xkqgi6q
天那,这是人看的吗?不是。这是经过加密处理后的数据。同样,我们可以将加密后的数据传递到get方法的cookies参数中,服务器会自动将加密后的数据进行解密,再检查数据的正确性。
至于,如何查看所访问网页的cookies内容,可以使用浏览器的审查功能,F12或者右击审查(Chrome)打开。在network中查看链接的Headers内容。另外,也可以使用软件抓包查看,如Fiddler web Debugger。
这里假设获取到了cookies的内容,我们可以保存到本地TXT文件中(直接把cookies的内容粘贴进去即可),例如test.txt文件。
然后,
f=open(r'test.txt','r')#打开所保存的cookies内容文件 cookies={}#初始化cookies字典变量 for line in f.read().split(';'): #按照字符:进行划分读取 #其设置为1就会把字符串html" target="_blank">拆分成2份 name,value=line.strip().split('=',1) cookies[name]=value #为字典cookies添加内容
这时候我们将cookies添加到get方法中:
res=requests.get("https://cloud.flyme.cn/browser/index.jsp",cookies=cookies)
这时候获取到的res.content中就是我们将cookies信息添加到get中后访问网页所获取的内容。
总结
以上就是本文关于python编程之requests在网络请求中添加cookies参数方法详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:python正则表达式re之compile函数解析、Python_LDA实现方法详解、Python探索之修改Python搜索路径等,如有不足之处,欢迎留言讨论。感谢朋友们对本站的支持!
本文向大家介绍python 实现Requests发送带cookies的请求,包括了python 实现Requests发送带cookies的请求的使用技巧和注意事项,需要的朋友参考一下 一、缘 起 最近学习【悠悠课堂】的接口自动化教程,文中提到Requests发送带cookies请求的方法,笔者随之也将其用于手头实际项目中,大致如下 二、背 景 实际需求是监控平台侧下发消息有无异常,如有异常便触发报
本文向大家介绍详解Python Socket网络编程,包括了详解Python Socket网络编程的使用技巧和注意事项,需要的朋友参考一下 Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页、QQ 聊天、收发 email 等等。要解决网络上两台主机之间的进程
本文向大家介绍python-requests POST请求,包括了python-requests POST请求的使用技巧和注意事项,需要的朋友参考一下 示例 POST请求是使用方法发出的。request.post() 如果您需要发送Web表单请求作为POST正文,请传入以键值对作为data参数的字典;requests会将它们编码为application/x-www-form-urlencoded模
Python 提供了两个级别访问的网络服务。: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使
本文向大家介绍java swagger ui 添加header请求头参数的方法,包括了java swagger ui 添加header请求头参数的方法的使用技巧和注意事项,需要的朋友参考一下 我用到的swagger 主要有三款产品,swagger editor,swagger ui 和swagger codegen。 swagger editor:主要是一个本地客户端,用来自己添加api,自己来测
本文向大家介绍微信小程序 网络请求API详解,包括了微信小程序 网络请求API详解的使用技巧和注意事项,需要的朋友参考一下 wx.request(OBJECT)发起的是https请求。一个微信小程序,同时只能有5个网络请求连接。 OBJECT参数说明: 效果图: net.js net.wxml: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!