摘要:對比新浪提供的API及傳統(tǒng)的爬蟲方式獲取微博的優(yōu)缺點,采用模擬登陸和網(wǎng)頁解析技術,將獲取的信息存入數(shù)據(jù)庫中并進行分析?;赑ython設計實現(xiàn)了新浪微博爬蟲程序,可以根據(jù)指定的關鍵詞獲取相應的微博內(nèi)容及用戶信息。
關鍵詞:新浪微博;Python;爬蟲
0 引言
自2009年8月新浪推出微博業(yè)務以來,微博逐漸地進入人們的日常生活中。越來越多的人開始加入到社交網(wǎng)絡中,與他人互動。繼新浪之后,騰訊、網(wǎng)易等也相繼推出微博業(yè)務,但新浪做為國內(nèi)微博界的“元老”,仍是廣泛受到人們的歡迎。如今,新浪微博用戶已達5億多人。
隨著使用人數(shù)的直線上升,帶來的是信息量的急劇膨脹。每天都有數(shù)以萬計的信息在奔流。微博通過點贊,轉(zhuǎn)發(fā),評論功能將個人的聲音快速放大到社會空間,將個人的行為放大成為社會行為。作為網(wǎng)絡新媒體的代表,微博用戶產(chǎn)生的大量微博數(shù)據(jù)以及用戶之間的互粉,轉(zhuǎn)發(fā)等關系作為真實社會關系的一種寫照,為社會網(wǎng)絡研究提供了絕佳的研究數(shù)據(jù)。基于微博的數(shù)據(jù)研究已成為當今社會科學和計算機科學研究的重點。
1 新浪API
API接口使用較為方便,通過一個接口就可以很方便得獲取所需的信息,而無須了解具體實現(xiàn)過程。但是新版的新浪API接口卻有著很大的限制。最主要的一點,如果要想獲得某人的微博個人信息和發(fā)表的微博內(nèi)容,就必須得到對方的授權許可。
新浪API使用OAuth2.0授權機制。授權流程如圖1所示。
其中Client指第三方應用,Resource Owner指用戶,Authorization Server是我們的授權服務器,ResourceServer是API月艮務器。
首先應用需要先引導用戶到某個地址,用戶授權后得到access token,然后使用獲取的access token來調(diào)用API,以此來得到用戶的信息和微博的內(nèi)容。Access_token相當于是令牌,持有相應的令牌才能得到所需。除此以外,access token還有授權有效期,對于測試應用來說只有一天的時間。
除了這些限制外,新浪API針對一個用戶在使用一個應用的請求次數(shù)上還有限制。對于測試授權來說,單個用戶每個應用每小時只能請求150次。這對于爬取微博信息來說是不夠的。正因為有如此諸多的不便,盡管API的實現(xiàn)對開發(fā)者是透明的,但筆者仍決定采用傳統(tǒng)的模擬登陸方法,然后通過分析網(wǎng)頁源代碼來獲取信息。
2 模擬登陸
新浪微博的內(nèi)容只有在登陸后才可以獲取。通過firefox+httpfox分析網(wǎng)頁版微博登陸方式可以發(fā)現(xiàn)主要分為+步驟:(1)瀏覽器向新浪的服務器發(fā)送了一個GET請求報文,用于獲取servertime,nounce字段,這兩個字段是隨機字段,每次登陸都不相同,用于加密用戶名和密碼;(2)用BASE64算法加密用戶名,用RSA算法加密密碼,向登陸URL發(fā)送包含加密后的用戶名和密碼的POST請求;(3)新浪服務器收到請求后與信息庫進行比對,如果比對成功則發(fā)送一條含重定向的應答報文,瀏覽器解析得到最終跳轉(zhuǎn)到的URL,打開該URL后,自動將該信息寫入COOKIES,登陸成功。
3 網(wǎng)頁分析
以新浪官方的搜索平臺為搜索入口,輸入關鍵詞后,構造相應url。分析網(wǎng)頁源代碼,可以發(fā)現(xiàn)頁面上的所有微博內(nèi)容都在以
客服熱線:400-656-5456??客服專線:010-56265043??電子郵箱:longyuankf@126.com
電信與信息服務業(yè)務經(jīng)營許可證:京icp證060024號
Dragonsource.com Inc. All Rights Reserved