python urllib2模块携带cookie
今天干活遇到一个事。有一些网站的一些操作非得要求你登陆才能做,比如新浪微博,你要随便看看吧,不行,非得让你登陆了才能看,再比如一些用户操作,像更改自己的资料啦,个人的隐私啦巴拉巴拉的。想抓取这样的url的话,就得一边携带cookie一边搞。
今天遇到的问题就是mediawiki的编辑文章这个操作,wiki默认是要求你登陆才能编辑。不过wiki是开源的,可以改源码设置成不用非得登陆也可以编辑。最开始为了快点看到效果,就是改的源码,记得是LocalSetting.php这个文件,里面有一堆键值对,是用户权限的设置。都是布尔,很好搞。
后来又研究了一下urllib2是怎么携带cookie的:
下面干这么一件事:去知乎登陆,完了进到个人中心的编辑资料页面。就这两步
#encoding:utf-8
import urllib
import urllib2
import cookielib #用来搞cookie的 #第一步:登陆知乎 #拿到一个cookie实例,用来保留cookie,具体怎么保留这个不用操心,一切给http handler(这里就是HTTPCookieProcessor)处理
cookie = cookiellib.CookieJar()
#整一个opener出来,实际上不这么整的话,就像最普通的urllib2.urlopen(url)这样,实际上也是用了一个默认的openrer,只不过今天在这里是明确指定了opener,因为要搞cookie么
#build_opener里面加了一个http handler用来处理所有http请求相关的东西,包括cookie的操作,这里为了搞cookie,所以用了这个cookieprocessor,里面放刚才的cookie实例
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
data = {"email":"xxx","password":"xxx"}
data=urllib.urlencode(data)
request = urllib2.Request("http://www.zhihu.com/login", data)
response = opener.open(request)
#这个时候cookie已经被保存好了
print cookie #第二步:进入个人中心编辑页面
#注意上面cookie已经保存好了,而且注意是用这个cookie创建了httpcookieprocessor,又用这个httphandler创建了opener,所以这个opener就跟cookie关联上了,那么接下来进入个人中心就直接用这个opener就可以了
response2 = opener.open("http://www.zhihu.com/people/edit")
#完事 谢谢
完事,洗香香去,完了俯卧撑,昨晚昨晚今天胸疼嗷嗷嗷嗷
python urllib2模块携带cookie的更多相关文章
- python urllib2 支持 自定义cookie
先是在GOOGLE 上找了下, 发现就是只有2种方法,试了下,果然不行. 1, MozillaCookieJar 自定义保存到文件中 加载的时候不行,保存没问题. 2,opener.addheader ...
- Python urllib2 模块学习笔记
2015.3.6 urllib2的使用方法大致如下 # 定制Handler处理函数 opener = urllib2.build_opener(ProxyHandler, HTTPHandler) ...
- Python urllib2 模块
urllib2.urlopen(url, data=None, timeout=<object object>) :用于打开一个URL,URL可以是一个字符串也可以是一个请求对象,data ...
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- Python的urllib和urllib2模块
Python的urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能.他们两个最显着的差异如下: urllib2可以接受一个Request对象,并以此可以来设置一个URL的h ...
- urllib2模块中文翻译与学习 - Python 2.7.8官方文档
总结 目的 打开指定网址 要求 了解需要处理的网站的操作流程 数据包的构造与提交 对可能的响应处理选择合适的处理器(模块内的各种 *Handler()) 核心 urllib.urlencode(que ...
- 【Python】Python的urllib模、urllib2模块的网络下载文件
因为需要从一些下载一个页PDF文件.但是需要下载PDF有数百个文件,这是不可能用人工点击下载.只是Python有相关模块,所以写一个程序PDF文件下载,顺便熟悉Python的urllib模块和ulrl ...
- Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 ...
- 洗礼灵魂,修炼python(54)--爬虫篇—urllib2模块
urllib2 1.简介 urllib2模块定义的函数和类用来获取URL(主要是HTTP的),他提供一些复杂的接口用于处理: 基本认证,重定向,Cookies等.urllib2和urllib差不多,不 ...
随机推荐
- IDC机房动力环境设备维护
高低压配电 空调 ...
- Library string Type
The string type supports variable-length character strings.The library takes cares of managing memor ...
- 关于C++对汉字拼音的处理(2)
对于前面获取字符串汉字全拼音的功能,大家应该有个了解了.现在我又综合广大网友流传的获取字符串汉字拼音首字母的功能进行了整理.介绍如下 这个功能写的稍微有点复杂 使用3个函数解决了获取字符串汉字首拼音串 ...
- oracle 备份脚步
#!/bin/sh # Date: -- : # Author: chzh # Version: # Update: Add copy db backup file to remote back se ...
- Linux的进程优先级
Linux的进程优先级 为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情.因为有的进程相对重要,而有的进程则没那么重 ...
- Windows平台下Qt开发环境的搭建
Qt 是采用开源和商用双协议发布的开放源代码的图形开发类库,现在很多图形化的开源软件都使用了Qt. 下载地址:http://qt-project.org/downloads 1. 下载安装包 你可以从 ...
- Jquery EasyUI中treegrid的中右键菜单和一般按钮同时绑定事件时的怪异事件
做个项目使用jquery easyui来做前端,也许是对此不是很熟悉,总是发现一些不可理解的事件. 主要源代码如下: <script type="text/javascript&qu ...
- jquery阻止事件的两种实现方式
再阻止事件冒泡的方面,jquery有两种方式: 一种是 return false;另外一种是 e.stopPropagation() html代码 <form id="form1&qu ...
- 解决treeview的同一节点单击多次的执行问题
在使用treeview的AfterSelect函数的时候,单击同一节点多次无响应. 解决方法: 将首次单击的节点信息保存到selectTreeNode: 然后使用click函数,判断单击的节点是否和s ...
- DataTable,DataSet,DataRow与DataView
DataTable和DataSet可以看做是数据容器,比如你查询数据库后得到一些结果,可以放到这种容器里,那你可能要问:我不用这种容器,自己读到变量或数组里也一样可以存起来啊,为什么用容器?原因是,这 ...