最近搞科研,总要有数据,奈何新浪API限制太多。。。。。
网上的新浪爬虫教程太杂乱,就不能简单点让大家都看懂吗????
主要参考:
http://blog.csdn.net/bcj296050240/article/details/46685947
http://www.jianshu.com/p/36a39ea71bfd
用爬虫爬取新浪数据的两个大步骤:
模拟浏览器登录;
爬取数据;
解析数据;
模拟浏览器登录必不可少,像新浪这种动态反扒网站,大致登录流程是:
1)客户端向服务器发送预登陆申请,又服务器动态的为客户端生成servertime, nonce, pubkey等信息。
2)用户名、密码配合返回的servertime, nonce, pubkey等动态信息,生成动态秘钥,并且和其他参数一起POST给服务器。
3)服务器验证用户名、密码正确后,给客户端发送一个真正的登录地址。
4)客户端登录该真正的地址,才算登陆成功。。。。。。。。
1)如何获取服务器为客户端生成servertime, nonce, pubkey等动态的信息:
笼统地说,使用Fiddler抓包分析。具体的:
1)下载Fiddler,安装后打开即可。
2)使用(IE)浏览器登录一次微博,发现Fiddler抓包的记录如下:
右边,五个椭圆信息是动态生成的,具体的,实在请求【server_URL = "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)"】时生成的;所以代码应该如下:
server_URL = "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)"
response = urllib2.urlopen(server_URL).read() # 获取网页内容
print 'response', response
解析response就可以得到servertime, nonce, pubkey, rsakv这四个信息了。