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)