zoukankan      html  css  js  c++  java
  • 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") #完事 谢谢

    完事,洗香香去,完了俯卧撑,昨晚昨晚今天胸疼嗷嗷嗷嗷

  • 相关阅读:
    CentOS下用yum命令安装jdk【转】
    Maven中的-D(Properties属性)和-P(Profiles配置文件)
    Mac Maven配置
    MVC从路由到Controller运行机制
    IIS与ASP.NET对请求的处理
    免费SSL证书(支持1.0、1.1、1.2)
    C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe
    InstallShield Limited Edition Project 打包windows服务解析
    InstallShield Limited Edition使用说明
    因为数据库正在使用,所以无法获得对数据库的独占访问权---还原或删除数据库的解决方法
  • 原文地址:https://www.cnblogs.com/lipijin/p/3470278.html
Copyright © 2011-2022 走看看