新浪微博爬蟲分享(2016年12月01日更新)
時間:2023-05-13 19:51:01 | 來源:網(wǎng)站運營
時間:2023-05-13 19:51:01 來源:網(wǎng)站運營
新浪微博爬蟲分享(2016年12月01日更新):
前言:
上篇文章:
《新浪微博爬蟲分享(一天可抓取 1300 萬條數(shù)據(jù))》、
《新浪微博分布式爬蟲分享》
Github地址:
SinaSpider
Q群討論:537549079
更新完
《QQ空間爬蟲分享(2016年11月18日更新)》,現(xiàn)在將新浪微博爬蟲的代碼也更新一下吧。
這次主要對爬蟲的種子隊列和去重策略作了優(yōu)化,并更新了Cookie池的維護(hù),只需拷貝代碼即可實現(xiàn)爬蟲分布式擴展,適合大規(guī)模抓取。使用說明:
- 需要安裝的軟件:Python2、Redis、MongoDB; 需要安裝的Python模塊:scrapy、requests、lxml。
- 進(jìn)入cookies.py,填入你的微博賬號(已有兩個賬號示例)。
- 進(jìn)入settings.py,如果你填入的賬號足夠多,可以將`DOWNLOAD_DELAY = 10` 和 `CONCURRENT_REQUESTS = 1`注釋掉。另外可以修改存放種子和去重隊列的機器,可以存放在兩臺不同的機器上面。
- 運行l(wèi)aunch.py啟動爬蟲,也可在命令行執(zhí)行`scrapy crawl SinaSpider`(Linux只能采用后者)。
- 分布式擴展:將代碼拷貝到一臺新機器上,運行即可。注意各子爬蟲要共用一個去重隊列,即將settings.py里面的`FILTER_HOST`設(shè)成同一臺機的IP。
代碼說明:
- 爬蟲基于scrapy+redis架構(gòu)進(jìn)行開發(fā)、優(yōu)化。
- 爬蟲支持?jǐn)帱c續(xù)爬。
- 非常簡易地,便可實現(xiàn)分布式擴展。
- 使用Redis的“位”進(jìn)行去重,1G的內(nèi)存可滿足80億個用戶ID的瞬間去重。
- 將種子優(yōu)化到不足40個字符,大大降低了Redis的內(nèi)存消耗,也提高了各子爬蟲從Redis取種子的速度。
注:本項目用代碼提交請求進(jìn)行登錄,不會遇到驗證碼。但是有個情況:如果一次性獲取幾十個Cookie,新浪會檢測到你的IP異常(大約多久會被檢測出來?以前是一分鐘左右,現(xiàn)在好像幾十秒,我們就用這幾十秒登陸完所有賬號,放心 代碼登錄很快的),大約十個小時后會給你的IP恢復(fù)正常。IP被檢測為異常會怎樣?不會影響爬蟲的抓取,只是你再登錄賬號時會被要求輸入驗證碼,日志如:
[Sina_spider3.cookies] WARNING: Failed!( Reason:為了您的帳號安全,請輸入驗證碼 )
如果我的賬號還沒登錄完就出現(xiàn)這種情況怎么辦?可以先將爬蟲停了,機器換個IP繼續(xù)獲取Cookie,放心 已獲取到Cookie的賬號會自動跳過。當(dāng)然如果你不喜歡受這個限制,可以用打碼平臺或著自己寫個程序把驗證碼搞定。其實只是第一次啟動爬蟲才是需要獲取那么多Cookie,之后只有等哪個Cookie失效了才會去更新。
數(shù)據(jù)說明:
用戶發(fā)表的微博: _id : 用戶ID-微博ID ID : 用戶ID Content : 微博內(nèi)容 PubTime : 發(fā)表時間 Co_oridinates : 定位坐標(biāo) Tools : 發(fā)表工具/平臺 Like : 點贊數(shù) Comment : 評論數(shù) Transfer : 轉(zhuǎn)載數(shù)
用戶的個人信息: _id: 用戶ID NickName: 昵稱 Gender: 性別 Province: 所在省 City: 所在城市 BriefIntroduction: 簡介 Birthday: 生日 Num_Tweets: 微博數(shù) Num_Follows: 關(guān)注數(shù) Num_Fans: 粉絲數(shù) SexOrientation: 性取向 Sentiment: 感情狀況 VIPlevel: 會員等級 Authentication: 認(rèn)證 URL: 首頁鏈接
轉(zhuǎn)載請注明出處,謝謝?。ㄔ逆溄樱?br>
http://blog.csdn.net/bone_ace/article/details/53379904)