python爬取微博評論
1. python爬取和分析新浪微博(一):scrapy構建新浪微博榜單、博主及微博信息爬蟲
爬蟲項目介紹
本項目基於Python的Scrapy框架,採用隨機用戶代理和IP代理等反爬技巧,將收集到的微博領域數據、各領域榜單博主信息和博主的微博信息分別存入MySQL資料庫的相應表格。
查看完整代碼請訪問GitHub:
爬蟲邏輯
2.1 獲取微博領域信息
首先,爬取V影響力榜上所有微博領域名稱及其對應的各領域微博榜單鏈接。
2.2 獲取各領域榜單博主信息
進入各領域排行榜頁面(如互聯網榜),抓取4月月榜排名前100的博主信息。
分析網頁得知,博主信息通過單獨請求json文件獲取。
請求的URL地址為:v6.bang.weibo.com/aj/we...
URL中__rnd欄位的值由請求時間戳生成。
使用POST請求,並在表單中包含type、date、domainId等欄位。
編寫請求代碼如下:
2.3 獲得博主個人主頁和發表微博信息
收集每個博主的昵稱、ID、粉絲數、關注數、微博數、性別、地址等信息後,進入博主的微博主頁,抓取最近60條微博信息(包括內容、發表日期、轉發/點贊/評論數等)。
請求博主主頁URL時需攜帶固定的cookie信息。
博主微博主頁分析發現,發表的微博內容通過單獨請求json文件獲取。
json文件的URL很長,包含domain、pl_name、page_id、script_uri等欄位。
請求方式為GET。
請求json文件後,將data值轉化為Scrapy的Selector子類,使用CSS或XPath選擇器獲取所需信息。
爬蟲代理設置
為了對抗微博的反爬策略,本項目使用隨機更換User-Agent和IP地址的方法。
3.1 隨機User-Agent
編寫RandomUserAgentMiddleware中間件,使用fake-useragent生成UserAgent實例,為每次請求隨機生成一個User-Agent。
具體代碼在GitHub上。
3.2 隨機IP
從蘑菇IP代理購買付費IP,生成API鏈接,處理返回的JSON文件提取IP信息,保存至MySQL資料庫。Scrapy每次請求時從資料庫隨機獲取一個有效IP。
通過變換IP地址發送請求,基本避免了被反爬。
爬取結果
非同步保存至MySQL資料庫,數據分別存入weibotopic、topicuser、weiboinfo三個表格。
weibotopic(38個領域):
topicuser(3648個用戶,有些領域榜單上可能不足100個用戶):
weiboinfo(115740條微博)
小結
以上介紹了基於V影響力榜單爬取新浪微博信息的爬蟲項目,代碼在GitHub上公開,歡迎查看、交流。
後續文章將對收集到的數據進行統計分析和可視化展示,期待進一步的探索。
2. 9.12最快爬取新浪微博爬蟲Python代碼(主體內容+評論)
本文提供了一個完整的Python代碼,用於爬取新浪微博數據,包括主題內容和評論。
首先,我們以#華為發布會#這一話題為例,通過開發者模式,發現所需信息主要存儲在以#開頭的請求中,這些請求通常包含HTML格式內容,因此我們使用BeautifulSoup庫進行解析。
通過解析,我們能獲取到mid和uid參數,用於後續獲取評論內容。接著,我們發現了一個帶有q和nop參數的請求,以及隨著頁碼增加而變化的page參數。解析這些請求,我們能夠成功獲取到微博主題內容。
為了獲取評論內容,我們點擊更多評論鏈接,發現了一個包含評論內容的div標簽。我們解析出請求buildComments?is_reload=1&id=,發現其返回的為JSON格式數據,直接用於解析,簡化了步驟。
隨著滾動頁面獲取更多評論,我們觀察到每次載入都會伴隨著兩個請求,其中buildComments?flow=0&is_reload=1&id=...請求參數會逐漸增加,包括流標識、ID、評論數、用戶ID、上一條請求中最後一個評論的mid以及驗證是否人為操作的rum參數。通過分析,我們定義了一個函數來解析這些請求,實現自動獲取評論內容。
本文提供的代碼示例展示了從主題內容到評論內容的完整爬取流程,包含解析HTML、JSON數據以及處理請求參數的技巧。對於完整代碼,建議訪問CSDN博客獲取。