今天干活遇到一个事。有一些网站的一些操作非得要求你登陆才能做,比如新浪微博,你要随便看看吧,不行,非得让你登陆了才能看,再比如一些用户操作,像更改自己的资料啦,个人的隐私啦巴拉巴拉的。想抓取这样的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")
#完事 谢谢

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

最新文章

  1. Cesium原理篇:3最长的一帧之地形(2:高度图)
  2. 【Mail】JavaMail介绍及发送邮件(一)
  3. 多线程同步_Monitor
  4. tomcat出现的PermGen Space问题(bat,或者eclipse启动。)
  5. 【数论】【扩展欧几里得】Codeforces 710D Two Arithmetic Progressions
  6. JAVA FILE or I/O学习 - I/O流操作:FileInputStream、FileOutputStream、ObjectInputStream、ObjectOutputStream、InputStreamReader、OutputStreamWriter等
  7. 仿微沟道效应,主要actionbar有些知识
  8. delphi字符串函数大全
  9. hdu 2993 MAX Average Problem(斜率DP入门题)
  10. bfs UESTC 381 Knight and Rook
  11. C#窗口实现最小化到系统托盘
  12. hadoop1.2.1 MultipleOutputs将结果输出到多个文件或文件夹
  13. lightoj 1282 取对数的操作
  14. js中级小知识
  15. 数据库MongoDB
  16. 《Inside C#》笔记(六) 属性、数组、索引器
  17. Qt编写echart仪表盘JS交互程序支持webkit和webengine(开源)
  18. Spark RDD Transformation 简单用例(一)
  19. [daily] SNAT和DNAT
  20. SourceTree 使用

热门文章

  1. 获取键盘输入或者USB扫描枪数据
  2. mongodb下载及安装配置教程【仅供参考】
  3. Win32 CreateWindow GdiPlus
  4. 第4章 管道与FIFO
  5. AOP学习过程中遇到的问题汇总
  6. 【原创】解决国内Android SDK无法更新问题更新
  7. spring拦截器
  8. thinkPHP add、save无法添加、修改不起作用
  9. TDirectory.GetFiles获取指定目录下的文件
  10. Toy Storage