python 爬虫 微博 github_GitHub - Joria0414/weiboSpider: 新浪微博爬虫,用python爬取新浪微博数据...
Weibo Spider
本程序可以連續(xù)爬取一個或多個新浪微博用戶(如胡歌、迪麗熱巴、郭碧婷)的數(shù)據(jù),并將結果信息寫入文件或數(shù)據(jù)庫。寫入信息幾乎包括用戶微博的所有數(shù)據(jù),包括用戶信息和微博信息兩大類。因為內容太多,這里不再贅述,詳細內容見獲取到的字段。如果只需要用戶信息,可以通過設置實現(xiàn)只爬取微博用戶信息的功能。本程序需設置cookie來獲取微博訪問權限,后面會講解如何獲取cookie。如果不想設置cookie,可以使用免cookie版,二者功能類似。
具體的寫入文件類型如下:
寫入txt文件(默認)
寫入csv文件(默認)
寫入json文件(可選)
寫入MySQL數(shù)據(jù)庫(可選)
寫入MongoDB數(shù)據(jù)庫(可選)
寫入SQLite數(shù)據(jù)庫(可選)
下載用戶原創(chuàng)微博中的原始圖片(可選)
下載用戶轉發(fā)微博中的原始圖片(免cookie版特有)
下載用戶原創(chuàng)微博中的視頻(可選)
下載用戶轉發(fā)微博中的視頻(免cookie版特有)
下載用戶原創(chuàng)微博Live Photo中的視頻(免cookie版特有)
下載用戶轉發(fā)微博Live Photo中的視頻(免cookie版特有)
內容列表
獲取到的字段
本部分為爬取到的字段信息說明,為了與免cookie版區(qū)分,下面將兩者爬取到的信息都列出來。如果是免cookie版所特有的信息,會有免cookie標注,沒有標注的為二者共有的信息。
用戶信息
用戶id:微博用戶id,如"1669879400",其實這個字段本來就是已知字段
昵稱:用戶昵稱,如"Dear-迪麗熱巴"
性別:微博用戶性別
生日:用戶出生日期
所在地:用戶所在地
學習經(jīng)歷:用戶上學時學校的名字和時間
工作經(jīng)歷:用戶所屬公司名字和時間
陽光信用(免cookie版):用戶的陽光信用
微博注冊時間(免cookie版):用戶微博注冊日期
微博數(shù):用戶的全部微博數(shù)(轉發(fā)微博+原創(chuàng)微博)
關注數(shù):用戶關注的微博數(shù)量
粉絲數(shù):用戶的粉絲數(shù)
簡介:用戶簡介
主頁地址(免cookie版):微博移動版主頁url
頭像url(免cookie版):用戶頭像url
高清頭像url(免cookie版):用戶高清頭像url
微博等級(免cookie版):用戶微博等級
會員等級(免cookie版):微博會員用戶等級,普通用戶該等級為0
是否認證(免cookie版):用戶是否認證,為布爾類型
認證類型(免cookie版):用戶認證類型,如個人認證、企業(yè)認證、政府認證等
認證信息:為認證用戶特有,用戶信息欄顯示的認證信息
微博信息
微博id:微博唯一標志
微博內容:微博正文
頭條文章url:微博中頭條文章的url,若微博中不存在頭條文章,則值為''
原始圖片url:原創(chuàng)微博圖片和轉發(fā)微博轉發(fā)理由中圖片的url,若某條微博存在多張圖片,每個url以英文逗號分隔,若沒有圖片則值為"無"
視頻url: 微博中的視頻url,若微博中沒有視頻,則值為"無"
微博發(fā)布位置:位置微博中的發(fā)布位置
微博發(fā)布時間:微博發(fā)布時的時間,精確到分
點贊數(shù):微博被贊的數(shù)量
轉發(fā)數(shù):微博被轉發(fā)的數(shù)量
評論數(shù):微博被評論的數(shù)量
微博發(fā)布工具:微博的發(fā)布工具,如iPhone客戶端、HUAWEI Mate 20 Pro等
結果文件:保存在當前目錄weibo文件夾下以用戶昵稱為名的文件夾里,名字為"user_id.csv"和"user_id.txt"的形式
微博圖片:原創(chuàng)微博中的圖片和轉發(fā)微博轉發(fā)理由中的圖片,保存在以用戶昵稱為名的文件夾下的img文件夾里
微博視頻:原創(chuàng)微博中的視頻,保存在以用戶昵稱為名的文件夾下的video文件夾里
微博bid(免cookie版):為免cookie版所特有,與本程序中的微博id是同一個值
話題(免cookie版):微博話題,即兩個#中的內容,若存在多個話題,每個url以英文逗號分隔,若沒有則值為''
@用戶(免cookie版):微博@的用戶,若存在多個@用戶,每個url以英文逗號分隔,若沒有則值為''
原始微博(免cookie版):為轉發(fā)微博所特有,是轉發(fā)微博中那條被轉發(fā)的微博,存儲為字典形式,包含了上述微博信息中的所有內容,如微博id、微博內容等等
示例
如果想要知道程序的具體運行結果,可以查看示例文檔,該文檔介紹了爬取迪麗熱巴微博的例子,并附有部分結果文件截圖。
運行環(huán)境
開發(fā)語言:python2/python3
系統(tǒng): Windows/Linux/macOS
使用說明
0.版本
本程序有兩個版本,你現(xiàn)在看到的是python3版,另一個是python2版,python2版位于python2分支。目前主力開發(fā)python3版,包括新功能開發(fā)和bug修復;python2版僅支持bug修復。推薦python3用戶使用當前版本,推薦python2用戶使用python2版,本使用說明是python3版的使用說明。
1.安裝程序
本程序提供兩種安裝方式,一種是源碼安裝,另一種是pip安裝,二者功能完全相同。如果你需要修改源碼,建議使用第一種方式,否則選哪種安裝方式都可以。
源碼安裝
$ git clone https://github.com/dataabc/weiboSpider.git
$ cd weiboSpider
$ pip install -r requirements.txt
pip安裝
$ python3 -m pip install weibo-spider
2.程序設置
要了解程序設置,請查看程序設置文檔。
3.運行程序
源碼安裝的用戶可以在weiboSpider目錄運行如下命令,pip安裝的用戶可以在任意有寫權限的目錄運行如下命令
$ python3 -m weibo_spider
第一次執(zhí)行,會自動在當前目錄創(chuàng)建config.json配置文件,配置好后執(zhí)行同樣的命令就可以獲取微博了。
如果你已經(jīng)有config.json文件了,也可以通過config_path參數(shù)配置config.json路徑,運行程序,命令行如下:
$ python3 -m weibo_spider --config_path="config.json"
如果你想指定文件(csv、txt、json、圖片、視頻)保存路徑,可以通過output_dir參數(shù)設定。假如你想把文件保存到/home/weibo/目錄,可以運行如下命令:
$ python3 -m weibo_spider --output_dir="/home/weibo/"
如果你想通過命令行輸入user_id,可以使用參數(shù)u,可以輸入一個或多個user_id,每個user_id以英文逗號分開,如果這些user_id中有重復的user_id,程序會自動去重。命令行如下:
$ python3 -m weibo_spider --u="1669879400,1223178222"
程序會獲取user_id分別為1669879400和1223178222的微博用戶的微博,后面會講如何獲取user_id。該方式的所有user_id使用config.json中的since_date和end_date設置,通過修改它們的值可以控制爬取的時間范圍。若config.json中的user_id_list是文件路徑,每個命令行中的user_id都會自動保存到該文件內,且自動更新since_date;若不是路徑,user_id會保存在當前目錄的user_id_list.txt內,且自動更新since_date,若當前目錄下不存在user_id_list.txt,程序會自動創(chuàng)建它。
個性化定制程序(可選)
本部分為可選部分,如果不需要個性化定制程序或添加新功能,可以忽略此部分。
本程序主體代碼位于weibo_spider.py文件,程序主體是一個 Spider 類,上述所有功能都是通過在main函數(shù)調用 Spider 類實現(xiàn)的,默認的調用代碼如下:
config = get_config()
wb = Spider(config)
wb.start() # 爬取微博信息
用戶可以按照自己的需求調用或修改 Spider 類。通過執(zhí)行本程序,我們可以得到很多信息。
點擊查看詳情
wb.user['nickname']:用戶昵稱;
wb.user['gender']:用戶性別;
wb.user['location']:用戶所在地;
wb.user['birthday']:用戶出生日期;
wb.user['description']:用戶簡介;
wb.user['verified_reason']:用戶認證;
wb.user['talent']:用戶標簽;
wb.user['education']:用戶學習經(jīng)歷;
wb.user['work']:用戶工作經(jīng)歷;
wb.user['weibo_num']:微博數(shù);
wb.user['following']:關注數(shù);
wb.user['followers']:粉絲數(shù);
wb.weibo:除不包含上述信息外,wb.weibo包含爬取到的所有微博信息,如微博id、微博正文、原始圖片url、發(fā)布位置、發(fā)布時間、發(fā)布工具、點贊數(shù)、轉發(fā)數(shù)、評論數(shù)等。如果爬的是全部微博(原創(chuàng)+轉發(fā)),除上述信息之外,還包含被轉發(fā)微博原始圖片url、是否為原創(chuàng)微博等。wb.weibo是一個列表,包含了爬取的所有微博信息。wb.weibo[0]為爬取的第一條微博,wb.weibo[1]為爬取的第二條微博,以此類推。當filter=1時,wb.weibo[0]為爬取的第一條原創(chuàng)微博,以此類推。wb.weibo[0]['id']為第一條微博的id,wb.weibo[0]['content']為第一條微博的正文,wb.weibo[0]['publish_time']為第一條微博的發(fā)布時間,還有其它很多信息不在贅述,大家可以點擊下面的"詳情"查看具體用法。
詳情
若目標微博用戶存在微博,則:
id:存儲微博id。如wb.weibo[0]['id']為最新一條微博的id;
content:存儲微博正文。如wb.weibo[0]['content']為最新一條微博的正文;
article_url:存儲微博中頭條文章的url。如wb.weibo[0]['article_url']為最新一條微博的頭條文章url,若微博中不存在頭條文章,則值為'';
original_pictures:存儲原創(chuàng)微博的原始圖片url和轉發(fā)微博轉發(fā)理由中的圖片url。如wb.weibo[0]['original_pictures']為最新一條微博的原始圖片url,若該條微博有多張圖片,則存儲多個url,以英文逗號分割;若該微博沒有圖片,則值為"無";
retweet_pictures:存儲被轉發(fā)微博中的原始圖片url。當最新微博為原創(chuàng)微博或者為沒有圖片的轉發(fā)微博時,則值為"無",否則為被轉發(fā)微博的圖片url。若有多張圖片,則存儲多個url,以英文逗號分割;
publish_place:存儲微博的發(fā)布位置。如wb.weibo[0]['publish_place']為最新一條微博的發(fā)布位置,如果該條微博沒有位置信息,則值為"無";
publish_time:存儲微博的發(fā)布時間。如wb.weibo[0]['publish_time']為最新一條微博的發(fā)布時間;
up_num:存儲微博獲得的點贊數(shù)。如wb.weibo[0]['up_num']為最新一條微博獲得的點贊數(shù);
retweet_num:存儲微博獲得的轉發(fā)數(shù)。如wb.weibo[0]['retweet_num']為最新一條微博獲得的轉發(fā)數(shù);
comment_num:存儲微博獲得的評論數(shù)。如wb.weibo[0]['comment_num']為最新一條微博獲得的評論數(shù);
publish_tool:存儲微博的發(fā)布工具。如wb.weibo[0]['publish_tool']為最新一條微博的發(fā)布工具。
定期自動爬取微博(可選)
要想讓程序每個一段時間自動爬取,且爬取的內容為新增加的內容(不包括已經(jīng)獲取的微博),請查看定期自動爬取微博。
如何獲取cookie
要了解獲取cookie方法,請查看cookie文檔。
如何獲取user_id
要了解獲取user_id方法,請查看user_id文檔,該文檔介紹了如何獲取一個及多個微博用戶user_id的方法。
常見問題
如果運行程序的過程中出現(xiàn)錯誤,可以查看常見問題頁面,里面包含了最常見的問題及解決方法。如果出現(xiàn)的錯誤不在常見問題里,您可以通過發(fā)issue尋求幫助,我們會很樂意為您解答。
相關項目
weibo-crawler - 功能和本項目完全一樣,可以不添加cookie,獲取的微博屬性更多;
weibo-search - 可以連續(xù)獲取一個或多個微博關鍵詞搜索結果,并將結果寫入文件(可選)、數(shù)據(jù)庫(可選)等。所謂微博關鍵詞搜索即:搜索正文中包含指定關鍵詞的微博,可以指定搜索的時間范圍。對于非常熱門的關鍵詞,一天的時間范圍,可以獲得1000萬以上的搜索結果,N天的時間范圍就可以獲得1000萬 X N搜索結果。對于大多數(shù)關鍵詞,一天產生的相應微博數(shù)量應該在1000萬條以下,因此可以說該程序可以獲得大部分關鍵詞的全部或近似全部的搜索結果。而且該程序可以獲得搜索結果的所有信息,本程序獲得的微博信息該程序都能獲得。
貢獻
歡迎為本項目貢獻力量。貢獻可以是提交代碼,可以是通過issue提建議(如新功能、改進方案等),也可以是通過issue告知我們項目存在哪些bug、缺點等,具體貢獻方式見為本項目做貢獻。
貢獻者
感謝所有為本項目貢獻力量的朋友,貢獻者詳情見貢獻者頁面。
注意事項
1.user_id不能為爬蟲微博的user_id。因為要爬微博信息,必須先登錄到某個微博賬號,此賬號我們姑且稱為爬蟲微博。爬蟲微博訪問自己的頁面和訪問其他用戶的頁面,得到的網(wǎng)頁格式不同,所以無法爬取自己的微博信息;如果想要爬取爬蟲微博內容,可以參考獲取自身微博信息;
2.cookie有期限限制,大約三個月。若提示cookie錯誤或已過期,需要重新更新cookie。
總結
以上是生活随笔為你收集整理的python 爬虫 微博 github_GitHub - Joria0414/weiboSpider: 新浪微博爬虫,用python爬取新浪微博数据...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fluke dtx-1800测试精度有必
- 下一篇: Python 超简单爬取新浪微博数据