摘要:前言利用實現抓取微博評論數據,廢話不多說。讓我們愉快地開始吧開發工具版本相關模塊模塊模塊模塊模塊模塊以及一些自帶的模塊。環境搭建安裝并添加到環境變量,安裝需要的相關模塊即可。
利用Python實現抓取微博評論數據,廢話不多說。
讓我們愉快地開始吧~
**Python版本:**3.6.4
相關模塊:
requests模塊;
re模塊;
pandas模塊;
lxml模塊;
random模塊;
以及一些Python自帶的模塊。
安裝Python并添加到環境變量,pip安裝需要的相關模塊即可。
本文以爬取微博熱搜《霍尊手寫道歉信》為例,講解如何爬取微博評論!
網頁地址
https://m.weibo.cn/detail/4669040301182509
網頁分析
微博評論是動態加載的,進入瀏覽器的開發者工具后,在網頁上向下拉取會得到我們需要的數據包
得到真實URL
https://m.weibo.cn/comments/hotflow?id=4669040301182509&mid=4669040301182509&max_id_type=0https://m.weibo.cn/comments/hotflow?id=4669040301182509&mid=4669040301182509&max_id=3698934781006193&max_id_type=0
兩條URL區別很明顯,首條URL是沒有參數max_id的,第二條開始max_id才出現,而max_id其實是前一條數據包中的max_id
但有個需要注意的是參數max_id_type,它其實也是會變化的,所以我們需要從數據包中獲取max_id_type
代碼實現
import reimport requestsimport pandas as pdimport timeimport randomdf = pd.DataFrame()try: a = 1 while True: header = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36" } resposen = requests.get("https://m.weibo.cn/detail/4669040301182509", headers=header) # 微博爬取大概幾十頁會封賬號的,而通過不斷的更新cookies,會讓爬蟲更持久點... cookie = [cookie.value for cookie in resposen.cookies] # 用列表推導式生成cookies部件 headers = { # 登錄后的cookie, SUB用登錄后的 "cookie": f"WEIBOCN_FROM={cookie[3]}; SUB=; _T_WM={cookie[4]}; MLOGIN={cookie[1]}; M_WEIBOCN_PARAMS={cookie[2]}; XSRF-TOKEN={cookie[0]}", "referer": "https://m.weibo.cn/detail/4669040301182509", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36" } if a == 1: url = "https://m.weibo.cn/comments/hotflow?id=4669040301182509&mid=4669040301182509&max_id_type=0" else: url = f"https://m.weibo.cn/comments/hotflow?id=4669040301182509&mid=4669040301182509&max_id={max_id}&max_id_type={max_id_type}" html = requests.get(url=url, headers=headers).json() data = html["data"] max_id = data["max_id"] # 獲取max_id和max_id_type返回給下一條url max_id_type = data["max_id_type"] for i in data["data"]: screen_name = i["user"]["screen_name"] i_d = i["user"]["id"] like_count = i["like_count"] # 點贊數 created_at = i["created_at"] # 時間 text = re.sub(r"<[^>]*>", "", i["text"]) # 評論 print(text) data_json = pd.DataFrame({"screen_name": [screen_name], "i_d": [i_d], "like_count": [like_count], "created_at": [created_at],"text": [text]}) df = pd.concat([df, data_json]) time.sleep(random.uniform(2, 7)) a += 1except Exception as e: print(e)df.to_csv("微博.csv", encoding="utf-8", mode="a+", index=False)print(df.shape)
效果展示
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/122995.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:所以說,我們所看到的微博頁面的真實數據并不是最原始的頁面返回的,而是后來執行后再次向后臺發送了請求,拿到數據后再進一步渲染出來的。結果提取仍然是拿微博為例,我們接下來用來模擬這些請求,把馬云發過的微博爬取下來。 上一篇文章:Python3網絡爬蟲實戰---34、數據存儲:非關系型數據庫存儲:Redis下一篇文章:Python3網絡爬蟲實戰---36、分析Ajax爬取今日頭條街拍美圖 ...
摘要:今天為大家整理了個爬蟲項目。地址新浪微博爬蟲主要爬取新浪微博用戶的個人信息微博信息粉絲和關注。代碼獲取新浪微博進行登錄,可通過多賬號登錄來防止新浪的反扒。涵蓋鏈家爬蟲一文的全部代碼,包括鏈家模擬登錄代碼。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天為大家整...
摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...
摘要:當我們試圖從新浪微博抓取數據時,我們會發現網頁上提示未登錄,無法查看其他用戶的信息。三模擬登錄下面將介紹使用獲取新浪微博,然后使用提交從而實現模擬登錄。 當我們試圖從新浪微博抓取數據時,我們會發現網頁上提示未登錄,無法查看其他用戶的信息。模擬登錄是定向爬蟲制作中一個必須克服的問題,只有這樣才能爬取到更多的內容。 showImg(https://segmentfault.com/img/...
閱讀 812·2021-11-18 10:02
閱讀 2500·2021-11-11 16:54
閱讀 2749·2021-09-02 09:45
閱讀 653·2019-08-30 12:52
閱讀 2774·2019-08-29 14:04
閱讀 2745·2019-08-29 12:39
閱讀 447·2019-08-29 12:27
閱讀 1887·2019-08-26 13:23