新浪微博爬虫分享(2016年12月01日更新)
前言:
上篇文章:《新浪微博爬蟲分享(一天可抓取 1300 萬條數據)》、《新浪微博分布式爬蟲分享》
Github地址:SinaSpider
Q群討論:
更新完《QQ空間爬蟲分享(2016年11月18日更新)》,現在將新浪微博爬蟲的代碼也更新一下吧。
這次主要對爬蟲的種子隊列和去重策略作了優化,并更新了Cookie池的維護,只需拷貝代碼即可實現爬蟲分布式擴展,適合大規模抓取。
使用說明:
代碼說明:
注:本項目用代碼提交請求進行登錄,不會遇到驗證碼。但是有個情況:如果一次性獲取幾十個Cookie,新浪會檢測到你的IP異常(大約多久會被檢測出來?以前是一分鐘左右,現在好像幾十秒,我們就用這幾十秒登陸完所有賬號,放心 代碼登錄很快的),大約十個小時后會給你的IP恢復正常。IP被檢測為異常會怎樣?不會影響爬蟲的抓取,只是你再登錄賬號時會被要求輸入驗證碼,日志如[Sina_spider3.cookies] WARNING: Failed!( Reason:為了您的帳號安全,請輸入驗證碼 )。
如果我的賬號還沒登錄完就出現這種情況怎么辦?可以先將爬蟲停了,機器換個IP繼續獲取Cookie,放心 已獲取到Cookie的賬號會自動跳過。當然如果你不喜歡受這個限制,可以用打碼平臺或著自己寫個程序把驗證碼搞定。其實只是第一次啟動爬蟲才是需要獲取那么多Cookie,之后只有等哪個Cookie失效了才會去更新。
數據說明:
用戶發表的微博:
用戶的個人信息:
2016年12月15日更新:
有人反映說爬蟲一直顯示爬了0頁,沒有抓到數據。
2017年3月23日更新:
微博從昨天下午三點多開始做了一些改動,原本免驗證碼獲取Cookie的途徑已經不能用了。以前為了免驗證碼登錄,到處找途徑,可能最近爬的人多了,給封了。
那么就直面驗證碼吧,走正常流程登錄,才沒那么容易被封。此次更新主要在于Cookie的獲取途徑,其他地方和往常一樣(修改了cookies.py,新增了yumdama.py)。
加了驗證碼,難度和復雜程度都提高了一點,對于沒有編程經驗的同學可能會有一些難度。
驗證碼處理主要有兩種:手動輸入和打碼平臺自動填寫(手動輸入配置簡單,打碼平臺輸入適合大規模抓取)。
手動方式流程:
1. 下載PhantomJS.exe,放在python的安裝路徑(適合Windows系統,Linux請找百度)。
2. 運行launch.py啟動爬蟲,中途會要求輸入驗證碼,查看項目路徑下新生成的aa.png,輸入驗證碼 回車,即可。
打碼方式流程:
1. 下載PhantomJS.exe,放在python的安裝路徑。
2. 安裝Python模塊PIL(請自行百度,可能道路比較坎坷)
3. 驗證碼打碼:我使用的是 http://www.yundama.com/ (真的不是打廣告..),將username、password、appkey填入yumdama.py(正確率挺高,weibo.cn正常的驗證碼是4位字符,1元可以識別200個)。
4. cookies.py中設置IDENTIFY=2,運行launch.py啟動爬蟲即可。
2017年4月5日更新:
微博從4月1日開始對IP限制更嚴了,很容易就403 Forbidden了,解決的辦法是加代理。從16年12月更新代碼后爬微博的人多了許多,可能對weibo.cn造成了挺多無效訪問。所以此次代碼就不更新了,過濾一些爬蟲新手,如果仍需大量抓取的,在middleware.py中加幾行代碼,帶上代理就行了,難度也不大。沒加代理的同學將爬蟲速度再降低一點,還是能跑的。
可能有挺多同學需要微博數據寫論文,在群里找一下已有數據的同學吧,購買代理也不便宜。
(我也沒怎么跑微博,手上也沒什么數據)
轉載請注明出處,謝謝!(原文鏈接:http://blog.csdn.net/bone_ace/article/details/53379904)
總結
以上是生活随笔為你收集整理的新浪微博爬虫分享(2016年12月01日更新)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地图学习笔记
- 下一篇: java操作word,自动填写word表