新浪微博爬取笔记(1)进度
############
有关新浪微博wap模拟登陆、爬取的内容请看这一系列的其他博文
############
选择了一个新浪微博社会网络分析的毕设题目,需要爬取数据。只有一点python基础,爬虫这里是从零开始学习。看了若干技术博文,加了几个群。下半年就要进计算机学院的实验室做研究生project了,觉得可以开始写自己的技术博客,那就从毕设开始起个头吧。
学习路线基本是这样的:
需要爬新浪微博的转发列表,weibo.com上的转发列表是动态加载的,于是选取了selenium的webdriver,同时了解到PhantomJS也可以,而且速度更快;
在新版微博的模拟登陆上纠结了2个多礼拜,用别人的代码,基本看懂了流程,虽然依然不会手动POST之类(根本不理解);
学会用firebug, httpfox观察cookie,get响应;
别人的代码得到的loginUrl不能到登陆状态,以这篇文章(系列)为主http://www.cnblogs.com/houkai/p/3487816.html,又看了几篇其他的文章http://blog.csdn.net/springzfx/article/details/38435069,不得其解;
=========================================
决定爬wap端weibo.cn,虽然这时候weibo.com模拟登陆之前的代码得到的loginUrl突然能用了,但是考虑到新版微博的标签太复杂,还是准备爬weibo.cn。为了先测试爬取,就用webdriver定位(find_element_by_xpath)输入框手动登陆;
刚才找到一篇weibo.cn爬取的文章,或许有用http://qinxuye.me/article/simulate-weibo-login-in-python/;
用webdriver速度比较慢,考虑到需要爬的量很多,之后准备用PhantomJS,或者urllib/urllib2;
还不知道python的多线程怎么操作,考虑到爬取量大ip可能被封还需要加代理;
=======update 15.4.15========================
今天把http://qinxuye.me/article/simulate-weibo-login-in-python/的代码一行一行地看下来,因为是12年的文章,修改了要改的部分,虽然运行成功但有错误;
学到了BeautifulSoup, lxml, urllib, urllib2, cookielib这些包;
看了计算机网络的书,总算搞明白了应用层的http协议的报文传送过程、cookie的传送,其实这个应该最开始就解决;
=======update 15.4.16==================================
wap端登陆成功,加代理成功(加本省的代理,否则新浪认为异地登录会拒绝访问,代理会慢,在urllib2.open()里加timeout参数,我设置的是10);
加多线程,看文章http://www.cnblogs.com/tqsummer/archive/2011/01/25/1944771.html
=======update 15.4.17==================================
加多线程, 代理不稳定,每次都要重新选择,一个线程加一个代理;
试爬果壳网wap主页100页,每爬一页time.sleep(2)。 微博id, 转发数,时间。需要处理一个tag下如果有很多个字节,则需要循环取出;
=======update 15.4.18==================================
爬三个用户的微博列表各100页,条件筛选出需要爬转发列表的weibo id
=======update 15.4.19==================================
按照weibo id中每个爬转发列表,计算下时间,每页爬完设置time.sleep(1.5)。因为没有好用的代理,不能加多线程,这部分完成应该会到明天。
=======update 15.4.23==================================
事实上转发列表的爬取进行了4天。同一个ip,每个帐号可以爬3个小时左右,晚上爬2个小时左右就需要换另一个帐号。也可能限制的是请求数。今天开始爬取用户信息,完成这部分之后爬取的工作就全部完成了 :)
注:
(还没实验)wap端限制的应该不是ip地址,是每个帐号的请求数,所以可以多线程每个线程用不同的帐号登陆,这样爬的快一点。