在仿照《Python小练习:可视化人人好友关系》一文时,需要登录模拟登录人人网。然而自从CSDN事件之后,人人网开始使用加密方式处理登录名和密码,直接使用post方式已经无法登陆人人网。这时,从豆瓣讨论中找到了解决方法:
1. 首先使用浏览器登陆人人,然后找到浏览器中关于登陆的Cookie;
2. 将Cookie记录下来,在Python中使用cookie模块模拟浏览器的行为;
3. 取得并解析数据。
1. HTTP协议与Cookie
抓取网页的过程跟浏览器浏览网页的过程是一样的,了解浏览器的工作原理就进行网页抓取的第一步。
了解HTTP协议和Cookie的有一系列非常好的文章:
* HTTP协议详解
* HTTP协议 (二) 基本认证
* HTTP协议 (七) Cookie
2. urllib2与cookie使用分析
2.1. 最简单用法
1 import urllib2
2 page = urllib2.urlopen("http://www.baidu.com")
3 page_data = page.read()
4 print page_data
它直接模拟了登陆百度首页的方法,打印出来的话你可以看到page_data的内容和浏览器里查看到的网页源码是一样的。
2.2. 设置Request信息
有些网页不希望被抓取,这些网页所在的服务器可以通过Request的Header信息识别你使用的哪种浏览器访问的。比如大家在论坛常见的这样的图片就是这一种原理。
因此我们需要手修改Request的信息,urllib2提供了这一功