Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-9 微博信息采集與Python實現_第1頁
Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-9 微博信息采集與Python實現_第2頁
Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-9 微博信息采集與Python實現_第3頁
Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-9 微博信息采集與Python實現_第4頁
Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-9 微博信息采集與Python實現_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python爬蟲大數據采集與挖掘(9)

--微博信息采集與Python實現《Python爬蟲大數據采集與挖掘》第二版.微課視頻版(清華大學出版社,2025)教材《Python爬蟲大數據采集與挖掘》及配套公眾號

(當當、京東可購書)提綱微博信息采集方法概述微博開放平臺授權與測試使用Python調用微博API采集數據通過爬蟲采集微博常見的SNS平臺的信息采集途徑主要可以分為如下兩種:通過平臺提供的開放API獲取數據和通過爬蟲方式采集數據。微博API是微博官方開放的一組程序調用接口,通過這些API能夠獲得微博的博文、用戶信息及用戶關系信息等數據。但是在非商業授權下有較大的使用限制,能夠獲取的數據量有限。通過爬蟲方式采集數據的方法,具體又可以分為兩種,即,通過模擬用戶行為進行頁面分析與數據采集、通過模擬移動終端客戶端進行數據采集。通過平臺開放API獲取數據的方式與爬蟲方式的主要區別在于前者需要注冊平臺開發者身份。在獲取數據前使用平臺約定的方式進行身份認證。后者本質上是模擬終端或者用戶的方式,主要思路是通過平臺公開的頁面編碼內容進行請求命令的構造,并對返回的數據進行分析和提取,具體方法與前面第五章介紹的方法類似。提綱微博信息采集方法概述微博開放平臺授權與測試使用Python調用微博API采集數據通過爬蟲采集微博在調用微博之前,需要事先獲取用戶身份認證,這是指在開放平臺上的認證,而非普通用戶登錄微博時的認證。微博開放平臺用戶身份鑒權主要采用OAuth2.0認證方式,平臺授權的最終是獲得訪問令牌(access_token)。使用該令牌和用戶身份(uid)就可以在Python程序中調用API,實現微博信息的采集。獲取access_token的流程(1)創建微博用戶,并登錄微博();(2)進入“微博接口測試工具”(/tools/console),如果還沒有創建應用,則根據頁面提示創建一個應用。如果已經有應用,則轉步驟(4)。創建應用(3)創建成功后,進入應用控制臺。在OAuth2.0授權設置中,填寫“授權回調頁”為

/oauth2/default.html

。(4)填寫完成后,再次進入“微博接口測試工具”,可以看到API測試工具頁面。點擊“獲取AccessToken”可以獲得該應用的令牌在微博接口測試工具中測試API的調用上圖中展示了獲取微博用戶信息的API,其對應的API是“users/show”,相應的API參數要查閱微博API文檔。這里使用用戶的昵稱來獲取用戶信息,點擊“調用接口”后可以看到右邊的請求URL、參數以及返回的JSON數據。提綱微博信息采集方法概述微博開放平臺授權與測試使用Python調用微博API采集數據通過爬蟲采集微博流程介紹微博API及使用方法微博API微博官方提供給開發人員的一組函數調用接口,這是一種在線調用方式,不同于普通語言所提供的函數。根據輸入的參數返回相應的數據,其范圍涵蓋用戶個人信息、用戶的粉絲和關注、用戶發布的博文、博文的評論等等。向接口發送HTTP請求,接口就會返回所對應的JSON格式數據。新浪微博提供的API有九大類,即:粉絲服務接口、微博接口、評論接口、用戶接口、關系接口、搜索接口、短鏈接口、公共服務接口和OAuth2.0授權接口。最新的接口及功能可以到官方網站查閱:/wiki/%E5%BE%AE%E5%8D%9AAPI。用戶類API名稱及功能讀取接口users/show獲取用戶信息users/domain_show通過個性域名獲取用戶信息users/counts批量獲取用戶的粉絲數、關注數、微博數評論類API名稱及功能讀取接口comments/show獲取某條微博的評論列表comments/by_me我發出的評論列表comments/to_me我收到的評論列表comments/timeline獲取用戶發送及收到的評論列表comments/mentions獲取@到我的評論comments/show_batch批量獲取評論內容寫入接口comments/create評論一條微博comments/destroy刪除一條我的評論comments/destroy_batch批量刪除我的評論comments/reply回復一條我收到的評論使用方法對于每個API,新浪微博規定了其請求參數、返回字段說明、是否需要登錄、HTTP請求方式、訪問授權限制(包括訪問級別、是否頻次限制)等關鍵信息。其中,請求參數是API的輸入,而返回字段是API調用的輸出結果,一般是以JSON的形式進行封裝。HTTP請求方式支持GET和POST兩種,訪問授權限制則規定了客戶端調用API的一些約束條件。

必選類型及范圍說明access_tokentruestring采用OAuth授權方式為必填參數,OAuth授權后獲得。idtrueint64需要獲取的微博ID。返回值字段字段類型字段說明created_atString微博創建時間Idint64微博IDreposts_countInt轉發數comments_countInt評論數TextString微博信息內容#接口對應的URL,每個API對應一個URL,可以在在線開發文檔頁面查看url='/2/statuses/show.json'

#請求參數:access_token和微博的idurl_dict={'access_token':access_token,'id':wid}url_param=parse.urlencode(url_dict)

#發起請求res=requests.get(url='%s%s%s'%(url,'?',url_param),headers=header_dict)

#解析返回的jsondecode_data=json.loads(res.text)

#提取text字段的內容text=decode_data['text']錯誤處理錯誤代碼錯誤信息詳細描述10002Serviceunavailable服務暫停10004IPlimitIP限制不能請求該資源10012Illegalrequest非法請求10013Invalidweibouser不合法的微博用戶10022IPrequestsoutofratelimitIP請求頻次超過上限10023Userrequestsoutofratelimit用戶請求頻次超過上限例1:采集微博用戶個人信息微博用戶的個人信息包括用戶昵稱、簡介、粉絲數、關注數、微博數等,通過調用微博開發接口API可以得到這些個人信息數據。該接口為users/show,請求參數如表9-6所示,其中參數uid與screen_name二者必選其一,且只能選其一個。代碼及解釋見教材例2:采集微博博文使用微博API獲取博文主要涉及到兩個接口,即statuses/user_timeline/ids和statuses/show。前者用于獲取用戶發布的微博的ID列表,后者是根據微博ID獲得單條微博信息內容,包括文本內容、圖片以及評論轉發情況等。具體代碼及解釋見教材微博API的限制微博開放接口限制每段時間只能請求一定的次數。超過頻次限制的過度調用、或者是非用戶主動行為頻繁調用(即使未超過頻次限制)微博開放接口,會造成該應用、IP的接口訪問權限被封禁,造成所有開放接口的請求都會被限制。微博開放平臺禁止第三方服務器端存儲用戶數據,所以采用此方法只能緩存在客戶端,不能上傳到外部服務器。提綱微博信息采集方法概述微博開放平臺授權與測試使用Python調用微博API采集數據通過爬蟲采集微博通過微博API雖然可以很方便地采集到所需要的信息,而不需要像爬蟲那樣進行大量的頁面信息分析和提取。但是,微博API在調用頻次、返回數據記錄數等方面有一定限制,因此,如果需要大量地采集微博信息的話,微博API就難于滿足需求。先手工登錄微博,通過瀏覽器F12頁面跟蹤得到cookie,作為后續自動登錄的依據。1.利用微博PC版進行命令發送與結果的采集一種途徑是找到AJAX動態加載的請求地址直接獲取AJAX內容,但是當遇到加密的JS時,要分析并找到請求地址就會非常困難。另一種途徑是使用無界面瀏覽器,基于模擬瀏覽器方式執行js代碼以獲取完整html內容。其缺點是,執行速度慢。2.通過微博的移動端網頁來采集內容目前國內外主流的微博都提供了移動端接入方式,移動端網頁和PC端網頁的入口不同,頁面結構存在一定差異。一般情況下,移動端頁面并不采用AJAX技術,而是可以直接提取。但是與PC版網頁相比可能缺失部分內容。微博博文回帖采集教材里展示了一個微博熱搜的采集方法,與此類似,這里采集某個博文的回帖。通過跟蹤得到響應的URL查看相應的JSONu="/ajax/statuses/buildComments?is_reload=1&id=5139011190918405&is_show_bulletin=2&is_mix=0&count=20&type=feed&uid=1989660417&fetch_level=0&locale=zh-CN"records=[]#該函數與教材一致,只是user-agent和cookie替換成為前面跟蹤獲得相應信息data=getURLconent(u)qiuzhus=json.loads(data)plist=qiuzhus['data']forpinplist:rec=[]try:rec.append(p[‘created_at’])#回帖時間rec.append(p[‘text‘])#回帖內容records.append(rec)exceptKeyError:continueprint(records)#顯示采集到的回帖部分內容如下,可見獲得了正確的內容。登陸成功后,采集微博信息本質上就是獲取到微博平臺返回的HTM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論