本程式可以連續爬取一個或多個新浪微博用戶(如胡歌、迪麗熱巴、郭碧婷)的數據,並將結果資訊寫入檔案或資料庫。寫入資訊幾乎包括用戶微博的所有數據,包括用戶資訊和微博資訊兩大類。因為內容太多,這裡不再贅述,詳細內容請見取得到的欄位。如果只需要使用者訊息,可以透過設定實現只爬取微博用戶資訊的功能。本程式需要設定cookie來取得微博存取權限,後面會講解如何取得cookie。如果不想設定cookie,可以使用免cookie版,二者功能類似。
爬取結果可寫入檔案和資料庫,具體的寫入檔案類型如下:
同時支援下載微博中的圖片和視頻,具體的可下載檔案如下:
[TOC]
本部分為爬取到的欄位資訊說明,為了與免cookie版區分,以下將兩者爬取到的資訊都列出來。如果是免cookie版所特有的訊息,會有免cookie標註,沒有標註的為二者共有的資訊。
如果想要知道程式的特定運行結果,可以查看範例文檔,該文檔介紹了爬取迪麗熱巴微博的例子,並附有部分結果文件截圖。
本程式有兩個版本,現在看到的是python3版,另一個是python2版,python2版位於python2分支。目前主力開發python3版,包括新功能開發和bug修復;python2版僅支援bug修復。推薦python3用戶使用目前版本,推薦python2用戶使用python2版,本使用說明是python3版的使用說明。
本程式提供兩種安裝方式,一種是原始碼安裝,另一種是pip安裝,二者功能完全相同。如果你需要修改原始碼,建議使用第一種方式,否則選哪種安裝方式都可以。
$ git clone https://github.com/dataabc/weiboSpider.git
$ cd weiboSpider
$ pip install -r requirements.txt
$ python3 -m pip install weibo-spider
若要了解程式設置,請查看程式設定文件。
原始碼安裝的使用者可以在weiboSpider目錄中執行以下命令, pip安裝的使用者可以在任意有寫入權限的目錄中執行以下命令
$ python3 -m weibo_spider
第一次執行,會自動在目前目錄建立config.json設定文件,設定好後執行同樣的指令就可以取得微博了。
如果你已經有config.json檔案了,也可以透過config_path參數設定config.json路徑,執行程序,命令列如下:
$ python3 -m weibo_spider --config_path= " config.json "
如果你想要指定檔案(csv、txt、json、圖片、影片)儲存路徑,可以透過output_dir參數設定。如果你想把檔案儲存到/home/weibo/目錄,可以執行以下指令:
$ python3 -m weibo_spider --output_dir= " /home/weibo/ "
如果你想要透過命令列輸入user_id,可以使用參數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,程式會自動建立它。
本部分為可選部分,如果不需要個人化定製程式或新增功能,可以忽略此部分。
本程式主體程式碼位於weibo_spider.py文件,程式主體是一個Spider 類,上述所有功能都是透過在main函數呼叫Spider 類別實現的,預設的呼叫程式碼如下:
config = get_config ()
wb = Spider ( config )
wb . start () # 爬取微博信息
使用者可以依照自己的需求呼叫或修改Spider 類別。透過執行本程序,我們可以得到很多資訊。
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' ]為第一條微博的發佈時間,還有其它很多資訊不在贅述,大家可以點擊下面的"詳情"查看具體用法。
若目標微博用戶存在微博,則:
若要讓程式每隔一段時間自動爬取,且爬取的內容為新增加的內容(不包括已經取得的微博),請查看定期自動爬取微博。
若要了解取得cookie方法,請查看cookie文件。
若要了解取得user_id方法,請查看user_id文檔,該文檔介紹如何取得一個及多個微博用戶user_id的方法。
如果執行程式的過程中出現錯誤,可以查看常見問題頁面,裡麵包含了最常見的問題及解決方法。如果出現的錯誤不在常見問題裡,您可以透過發issue尋求協助,我們會很樂意為您解答。
本計畫透過取得微博數據,為寫論文、做研究等非商業專案提供所需數據。學術研究文件是一些在論文或研究等方面使用過本程序的項目,這些項目展示已徵得所有者同意。在一些涉及隱私的描述上,已與所有者做了溝通,描述中只介紹所有者允許展示的部分。如果部分資訊擁有者之前同意展示並且已經寫在了文件中,現在又不想展示了,可以透過郵件([email protected])或issue的方式告訴我,我會刪除相關資訊。同時,也歡迎使用本計畫寫論文或做其它學術研究的朋友,將自己的研究成果展示在學術研究文檔裡,這完全是自願的。
為方便大家引用,現提供本項目的bibtex 條目如下:
@misc{weibospider2020,
author = {Lei Chen, Zhengyang Song, schaepher, minami9, bluerthanever, MKSP2015, moqimoqidea, windlively, eggachecat, mtuwei, codermino, duangan1},
title = {{Weibo Spider}},
howpublished = {url{https://github.com/dataabc/weiboSpider}},
year = {2020}
}
歡迎為本項目貢獻力量。貢獻可以是提交程式碼,可以是透過issue提建議(如新功能、改進方案等),也可以是透過issue告知我們專案存在哪些bug、缺點等,具體貢獻方式見為本專案做出貢獻。
感謝所有為本專案貢獻力量的朋友,貢獻者詳情請見貢獻者頁面。