python爬取微博评论数据的github链接_GitHub - DABOLUO111/weiboSpider: 新浪微博爬虫,用python爬取新浪微博数据...
功能
爬取新浪微博信息,并寫入csv/txt文件,文件名為目標用戶id加".csv"和".txt"的形式,同時還會下載該微博原始圖片和微博視頻(可選)。
本程序需要設置用戶cookie,以獲取微博訪問權限,后面會講解如何獲取cookie。如需免cookie版,大家可以訪問https://github.com/dataabc/weibo-crawler,
二者功能類似,免cookie版因為不需要cookie,用法更簡單,但功能卻更多。
以爬取迪麗熱巴的微博為例,她的微博昵稱為"Dear-迪麗熱巴",id為1669879400(后面會講如何獲取用戶id)。我們選擇爬取她的原創微博。程序會自動生成一個weibo文件夾,我們以后爬取的所有微博都被存儲在這里。然后程序在該文件夾下生成一個名為"Dear-迪麗熱巴"的文件夾,迪麗熱巴的所有微博爬取結果都在這里。"Dear-迪麗熱巴"文件夾里包含一個csv文件、一個txt文件、一個img文件夾和一個video文件夾,img文件夾用來存儲下載到的圖片,video文件夾用來存儲下載到的視頻。
csv文件結果如下所示:
1669879400.csv
txt文件結果如下所示:
1669879400.txt
下載的圖片如下所示:
img文件夾
本次下載了793張圖片,大小一共1.21GB,包括她原創微博中的圖片和轉發微博轉發理由中的圖片。圖片名為yyyymmdd+微博id的形式,若某條微博存在多張圖片,則圖片名中還會包括它在微博圖片中的序號。若某張圖片因為網絡等原因下載失敗,程序則會以“weibo_id:pic_url”的形式將出錯微博id和圖片url寫入同文件夾下的not_downloaded.txt里;
下載的視頻如下所示:
video文件夾
本次下載了70個視頻,是她原創微博中的視頻,視頻名為yyyymmdd+微博id的形式。其中有一個視頻因為網絡原因下載失敗,程序將它的微博id和視頻url以“weibo_id:video_url”的形式寫到了同文件夾下的not_downloaded.txt里。
輸入
用戶id,例如新浪微博昵稱為"Dear-迪麗熱巴"的id為"1669879400"
輸出
昵稱:用戶昵稱,如"Dear-迪麗熱巴"
微博數:用戶的全部微博數(轉發微博+原創微博)
關注數:用戶關注的微博數量
粉絲數:用戶的粉絲數
微博id:微博唯一標志
微博內容:微博正文
原始圖片url:原創微博圖片和轉發微博轉發理由中圖片的url,若某條微博存在多張圖片,每個url以英文逗號分隔,若沒有圖片則值為無
微博發布位置:位置微博中的發布位置
微博發布時間:微博發布時的時間,精確到分
點贊數:微博被贊的數量
轉發數:微博被轉發的數量
評論數:微博被評論的數量
微博發布工具:微博的發布工具,如iPhone客戶端、HUAWEI Mate 20 Pro等
結果文件:保存在當前目錄weibo文件夾下以用戶昵稱為名的文件夾里,名字為"user_id.csv"和"user_id.txt"的形式
微博圖片:原創微博中的圖片和轉發微博轉發理由中的圖片,保存在以用戶昵稱為名的文件夾下的img文件夾里
微博視頻:原創微博中的視頻,保存在以用戶昵稱為名的文件夾下的video文件夾里
運行環境
開發語言:python2/python3
系統: Windows/Linux/macOS
使用說明
1.下載腳本
$ git clone https://github.com/dataabc/weibospider.git
運行上述命令,將本項目下載到當前目錄,如果下載成功當前目錄會出現一個名為"weibospider"的文件夾;
2.安裝依賴
pip install -r requirements.txt
3.設置cookie和user_id
打開weibospider文件夾下的"weibospider.py"文件,將"your cookie"替換成爬蟲微博的cookie,后面會詳細講解如何獲取cookie;將user_id替換成想要爬取的微博的user_id,后面會詳細講解如何獲取user_id;
4.運行腳本
大家可以根據自己的運行環境選擇運行方式,Linux可以通過
$ python weibospider.py
運行;
5.按需求修改腳本(可選)
本腳本是一個Weibo類,用戶可以按照自己的需求調用Weibo類。
例如用戶可以直接在"weibospider.py"文件中調用Weibo類,具體調用代碼示例如下:
user_id = 1669879400
filter = 1
pic_download = 1
wb = Weibo(user_id, filter, pic_download) #調用Weibo類,創建微博實例wb
wb.start() #爬取微博信息
user_id可以改成任意合法的用戶id(爬蟲的微博id除外);filter默認值為0,表示爬取所有微博信息(轉發微博+原創微博),為1表示只爬取用戶的所有原創微博;pic_download默認值為0,代表不下載微博原始圖片,1代表下載;wb是Weibo類的一個實例,也可以是其它名字,只要符合python的命名規范即可;通過執行wb.start() 完成了微博的爬取工作。在上述代碼執行后,我們可以得到很多信息:
wb.nickname:用戶昵稱;
wb.weibo_num:微博數;
wb.following:關注數;
wb.followers:粉絲數;
wb.weibo:除不包含上述信息外,wb.weibo包含爬取到的所有微博信息,如微博id、微博正文、原始圖片url、發布位置、發布時間、發布工具、點贊數、轉發數、評論數等。如果爬的是全部微博(原創+轉發),除上述信息之外,還包含被轉發微博原始圖片url、是否為原創微博等。wb.weibo是一個列表,包含了爬取的所有微博信息。wb.weibo[0]為爬取的第一條微博,wb.weibo[1]為爬取的第二條微博,以此類推。當filter=1時,wb.weibo[0]為爬取的第一條原創微博,以此類推。wb.weibo[0]['id']為第一條微博的id,wb.weibo[0]['content']為第一條微博的正文,wb.weibo[0]['publish_time']為第一條微博的發布時間,還有其它很多信息不在贅述,大家可以點擊下面的"詳情"查看具體用法。
詳情
若目標微博用戶存在微博,則:
id:存儲微博id。如wb.weibo[0]['id']為最新一條微博的id;
content:存儲微博正文。如wb.weibo[0]['content']為最新一條微博的正文;
original_pictures:存儲原創微博的原始圖片url和轉發微博轉發理由中的圖片url。如wb.weibo[0]['original_pictures']為最新一條微博的原始圖片url,若該條微博有多張圖片,則存儲多個url,以英文逗號分割;若該微博沒有圖片,則值為"無";
retweet_pictures:存儲被轉發微博中的原始圖片url。當最新微博為原創微博或者為沒有圖片的轉發微博時,則值為"無",否則為被轉發微博的圖片url。若有多張圖片,則存儲多個url,以英文逗號分割;
publish_place:存儲微博的發布位置。如wb.weibo[0]['publish_place']為最新一條微博的發布位置,如果該條微博沒有位置信息,則值為"無";
publish_time:存儲微博的發布時間。如wb.weibo[0]['publish_time']為最新一條微博的發布時間;
up_num:存儲微博獲得的點贊數。如wb.weibo[0]['up_num']為最新一條微博獲得的點贊數;
retweet_num:存儲微博獲得的轉發數。如wb.weibo[0]['retweet_num']為最新一條微博獲得的轉發數;
comment_num:存儲微博獲得的評論數。如wb.weibo[0]['comment_num']為最新一條微博獲得的評論數;
publish_tool:存儲微博的發布工具。如wb.weibo[0]['publish_tool']為最新一條微博的發布工具。
如何獲取cookie
1.用Chrome打開https://passport.weibo.cn/signin/login;
2.輸入微博的用戶名、密碼,登錄,如圖所示:
登錄成功后會跳轉到https://m.weibo.cn;
3.按F12鍵打開Chrome開發者工具,在地址欄輸入并跳轉到https://weibo.cn,跳轉后會顯示如下類似界面:
4.依此點擊Chrome開發者工具中的Network->Name中的weibo.cn->Headers->Request Headers,"Cookie:"后的值即為我們要找的cookie值,復制即可,如圖所示:
如何獲取user_id
1.打開網址https://weibo.cn,搜索我們要找的人,如"迪麗熱巴",進入她的主頁;
2.按照上圖箭頭所指,點擊"資料"鏈接,跳轉到用戶資料頁面;
如上圖所示,迪麗熱巴微博資料頁的地址為"https://weibo.cn/1669879400/info",其中的"1669879400"即為此微博的user_id。
事實上,此微博的user_id也包含在用戶主頁(https://weibo.cn/u/1669879400?f=search_0)中,之所以我們還要點擊主頁中的"資料"來獲取user_id,是因為很多用戶的主頁不是"https://weibo.cn/user_id?f=search_0"的形式,而是"https://weibo.cn/個性域名?f=search_0"或"https://weibo.cn/微號?f=search_0"的形式。其中"微號"和user_id都是一串數字,如果僅僅通過主頁地址提取user_id,很容易將"微號"誤認為user_id。
注意事項
1.user_id不能為爬蟲微博的user_id。因為要爬微博信息,必須先登錄到某個微博賬號,此賬號我們姑且稱為爬蟲微博。爬蟲微博訪問自己的頁面和訪問其他用戶的頁面,得到的網頁格式不同,所以無法爬取自己的微博信息;
2.cookie有期限限制,超過有效期需重新更新cookie。
總結
以上是生活随笔為你收集整理的python爬取微博评论数据的github链接_GitHub - DABOLUO111/weiboSpider: 新浪微博爬虫,用python爬取新浪微博数据...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 201902-Java面试总结
- 下一篇: java seek_java中seek(