python調用微博api
㈠ 如何通過python調用新浪微博的API來爬取數據
先上結論,通過公開的api如果想爬到某大v的所有數據,需要滿足以下兩個條件:
1、在你的爬蟲開始運行時,該大v的所有微博發布量沒有超過回溯查詢的上限,新浪是2000,twitter是3200。
2、爬蟲程序必須不間斷運行。
新浪微博的api基本完全照搬twitter,其中介面的參數特性與底層的Nosql密不可分,建議先看點Nosql資料庫的設計理念有助於更好的理解api設計。
一般來說,如果決定爬某個大v,第一步先試獲取該用戶的基本信息,中間會包含一條最新的status,記下其中的id號作為基準,命名為baseId。
介面中最重要的兩個參數:
since_id:返回ID比since_id大的微博(即比since_id時間晚的微博),默認為0。
max_id:返回ID小於或等於max_id的微博,默認為0。
出於各種原因,獲取statuses的介面,固定為按id降序排列(scan_index_forward=false),即最新的statuses返回在前。假設該微博第一天上線,就一個用戶,發了一百條,id是1到100。而你在該用戶發了第50條的時候開始運行的爬蟲,即baseId=50。
㈡ Scrapy 爬取新浪微博(正則和xpath解析)
本文探討使用Python的Scrapy庫進行新浪微博爬取的技術實踐,重點涉及正則表達式和XPath解析技術,同時採用MongoDB進行數據存儲。相比通過m.weibo.cn站點進行數據抓取,使用weibo.cn站點完成抓取更為穩定,效率更高。本文的目標是爬取新浪微博的全站數據,包括但不限於用戶數據、微博數據、評論數據以及社交關系。
首先,文章介紹了微博的三個主要站點,並指出weibo.cn作為最簡單的站點,是本文進行抓取操作的基礎。通過登錄微博獲取cookie,以避免被重定向到登錄界面,這是獲取數據的必要步驟。接下來,文章詳細闡述了爬蟲文件的構建,包括重寫start_requests方法,選取大V的ID進行個人詳情頁的抓取,並通過parse_information函數解析用戶信息。
在獲取用戶個人信息時,文章指出一些關鍵信息不在主頁顯示,需要通過特定URL進行抓取,從而獲取關注列表和粉絲列表。文章提到關注列表和粉絲列表的抓取有其固定限制,並使用update和$addToSet方法在存儲數據時實現去重。對於獲取用戶所有微博數據,文章提供了請求URL,並介紹了如何通過特定方法處理不完全顯示的微博內容,以及如何抓取微博評論信息。
在數據處理和存儲方面,文章提到通過添加cookies池和數據存儲策略,以及利用ip代理和mongodb賬號池進行訪問優化。此外,文章還分享了在執行爬蟲任務時的具體策略和結果,如對英雄聯盟賽事官方微博的爬取情況,以及對爬取數據進行的初步分析,包括評論數、熱度、年份與微博數、各月份的發帖情況以及互動熱度等。
文章最後提到了使用詞雲來可視化分析所獲取的微博內容,展示出用戶對部分解說違反規定的處理公告、對全明星投票的熱議、以及17年某條微博的評論等,同時分析了評論數、熱度與年份的關系,揭示了互動熱度的變化趨勢。通過這些分析,讀者可以更好地理解新浪微博的用戶互動和內容流行趨勢。