自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

超簡單,只需4步爬取女神微博評論

數據庫 MySQL
想去微博爬微博評論拿來做數據分析,拿以前寫的代碼用發(fā)現跑不起來了然后用瀏覽器登錄微博看了下請求過程,發(fā)現規(guī)則確實變了。以前可以直接看到數據接口,現在變復雜多了。

 想去微博爬微博評論拿來做數據分析,拿以前寫的代碼用發(fā)現跑不起來了

[[316726]]

然后用瀏覽器登錄微博看了下請求過程,發(fā)現規(guī)則確實變了。以前可以直接看到數據接口,現在變復雜多了。

咋辦呢?

吭呲吭呲從0開始分析?那樣太低效了。

你遇到的坑肯定很多人都遇到過,這個時候我們就沒必要自己重新去踩了。直接從他們填好的坑上走過去就好了,過蜀道如平川。

這里教你一個方法,4步爬取微博評論。

第一步:百度/Google

用搜素引擎搜關鍵字“微博評論爬蟲 python”, 基本上第一頁的結果都是最近一年寫的文章,有一定時效性,太早的文章就直接忽略。隨便打開兩篇你能看懂的文章,記住,看不懂不是你的問題,是作者沒寫明白。

我搜到簡書上的一篇文章,地址:https://www.jianshu.com/p/8dc04794e35f , 不過按照她的方式操作已經不起效了,因為微博的評論數據獲取方式改了,但是發(fā)現了一個很重要的線索。

第二步:分析驗證

雖然數據不再是通過接口的方法返回的,但是老接口還能用https://m.weibo.cn/api/comments/show?id={id}&page={page} , 這里的id是某條微博的id, page 是分頁參數。

于是嘗試用這個接口去獲取數據

 

確實能拿到數據,一共有40多萬條數據,每頁10條,41336頁。當你正喜出望外的時候,卻發(fā)現只能獲取最近50頁的數據。把 page 參數改成 51 就不行了。

 

不難理解,這種分頁方式在MySQL中是效率非常低效的,特別是遇到數據非常的時候,所以用這種方式拿不到全部分頁的數據是情理之中的。

幸好,還有一個新接口,https://m.weibo.cn/comments/hotflow?mid=4477013081328252&max_id=330569188932643&max_id_type=0

這個接口也能拿到評論,mid 是某條微博的參數, max_id 是分頁參數,這個參數可以從一個請求返回的數據中拿到

 

第三步:寫代碼、測試

數據獲取的原理搞懂了, 就可以通過代碼來實現,幾十萬條數據就能唰唰的爬下來。

為了能夠更好的做分析處理,我決定叫數據保存到MongoDB,它的好處就不介紹了,反正就是省事。

直接上代碼吧!

 

  1. ""
  2. 爬取微博評論,保存到數據庫 
  3.  
  4. https://m.weibo.cn/api/comments/show?id=4477013081328252&page=50 
  5. 該接口能獲取微博的前50頁數據,每頁10條, id 是某條微博的id 
  6.  
  7. https://m.weibo.cn/comments/hotflow?mid=4477013081328252&max_id=330569188932643&max_id_type=0 
  8. 此接口能爬到所有評論信息, mid 是某條微博id, max_id 是上一個請求返回的分頁參數, max_id_type 固定為0就好 
  9. ""
  10.  
  11. from pymongo import MongoClient 
  12. import requests 
  13. import time 
  14.  
  15. __author__ = 'liuzhijun' 
  16.  
  17. headers = { 
  18.     "Host""m.weibo.cn"
  19.     "User-Agent""Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) " 
  20.                   "Version/9.0 Mobile/13B143 Safari/601.1"
  21.     "Cookie""xxxxx" # 這里將瀏覽器的cookie復制過來進行了。 
  22.  
  23. client = MongoClient('mongodb://localhost:27017/'
  24. db = client['weibo'
  25.  
  26. def main(mid, max_id): 
  27.     ""
  28.     :param mid: 某條微博id 
  29.     :param max_id: 分頁參數 
  30.     :return
  31.     ""
  32.     url = "https://m.weibo.cn/comments/hotflow?max_id_type=0" 
  33.     params = {"mid": mid} 
  34.     if max_id: 
  35.         params['max_id'] = max_id 
  36.  
  37.     res = requests.get(url, params=params, headers=headers) 
  38.     print(res.content) 
  39.     result = res.json() 
  40.     max_id = result.get("data").get("max_id"
  41.     data = result.get('data').get('data'
  42.     for item in data: 
  43.         db['comment'].insert_one(item) 
  44.  
  45.     if max_id: 
  46.         time.sleep(1) 
  47.         main(mid, max_id) 
  48.  
  49. if __name__ == '__main__'
  50.     main("4477013081328252", None) 

 

最后數據整齊劃一保存在數據庫中

 

剩下的時候就可以做分析了

第4步:關注公眾號

這一步是可選項。核心代碼就那么幾行,是不是覺得特別簡單,如果你會寫HelloWorld,那么這個代碼對你來說也不難嘛,這對做產品、做運營的時候來說,簡直就是救命藥。再也不要求程序員哥哥要數據了。

把這邊文章分享給你身邊的朋友,關注我一起搞數據啊。。。

責任編輯:華軒 來源: Python之禪
相關推薦

2021-07-01 22:05:31

Python微博評論

2017-08-01 17:02:19

代碼Python數據

2020-03-09 08:00:43

娛樂圈肖戰(zhàn)評論

2015-05-11 17:30:22

蘋果庫克

2021-06-02 22:18:11

Python關鍵詞微博

2021-11-09 09:46:09

ScrapyPython爬蟲

2021-11-08 14:38:50

框架Scrapy 爬蟲

2021-07-13 08:09:34

微博推特評論

2019-08-28 09:28:07

SSHOpenSSH運維

2011-04-11 16:37:21

2020-04-27 21:19:21

小米MIUI12

2018-06-11 08:20:42

微博評論菊姐

2020-02-27 14:40:03

Python分析微博

2019-04-28 14:24:54

吳亦凡流量數據

2017-10-10 15:42:56

Python鹿晗關曉彤

2016-09-21 13:17:31

LibreOfficeJava緩沖區(qū)

2017-11-20 09:46:08

python爬蟲Scrapy

2021-03-02 07:02:45

Linux操作系統

2025-02-19 07:53:19

2022-07-12 09:55:34

Selenium爬取數據
點贊
收藏

51CTO技術棧公眾號