本軟件工具僅限於學術交流使用,嚴格遵循相關法律法規,符合平台內容合法合規性,禁止用於任何商業用途!
一、背景分析
1.1 開發背景
微博是國內非常流行的社交媒體平台,內容主要以文字和圖片為主,在實時性和KOL關注熱度方面尤為突出。廣大網友在微博平台大量輸出自己的觀點、看法,組成了一個活躍度極高的社區羣體。同時,我本人也發現,每次熱點事件爆發的時候,微博熱搜也是所有媒體平台裏最先曝光的平台(其他平台或多或少都有一些延遲)
基於此,我用python開發了一個爬蟲採集軟件,叫【爬微博搜索軟件】,下面詳細介紹。
1.2 軟件界面
軟件界面,如下:
1.3 結果展示
爬取結果:(截圖中展示的就是全部字段了)
1.4 演示視頻
軟件運行演示:原文有。
1.5 軟件説明
幾點重要説明,請詳讀了解:
- Windows用户可直接雙擊打開使用,無需Python運行環境,非常方便!
- 軟件通過爬蟲程序爬取,經本人專門測試,運行持久,穩定性較高!
- 先在cookie.txt中填入自己的cookie值,方便重複使用(內附cookie獲取方法)
- 支持多個關鍵詞串行爬取
- 支持按時間段範圍採集貼子
- 爬取過程中,每爬一頁,存一次csv。並非爬完最後一次性保存!防止因異常中斷導致丟失前面的數據(每條間隔1~2s)
- 爬取過程中,有log文件詳細記錄運行過程,方便回溯
- 結果csv含11個字段,有:關鍵詞,頁碼,微博id,微博鏈接,用户暱稱,用户主頁鏈接,發佈時間,轉發數,評論數,點贊數,微博內容。
以上是現有功能,軟件版本持續更新中。
二、主要技術
軟件全部模塊採用python語言開發,主要分工如下:
tkinter:GUI軟件界面
requests:爬蟲請求
BeautifulSoup:解析響應數據
pandas:保存csv結果、數據清洗
logging:日誌記錄
出於版權考慮,暫不公開源碼,僅向用户提供軟件使用。
三、功能介紹
3.0 填寫cookie
開始採集前,先把自己的cookie值填入cookie.txt文件。
pc端微博cookie獲取説明:
然後把複製的cookie值填寫到當前文件夾的cookie.txt文件中。
3.1 軟件登錄
用户登錄界面:
3.2 採集微博帖子
根據自己的實際情況,在軟件界面填寫採集條件,點擊開始按鈕:
完成採集後,在當前文件夾生成對應的csv文件,文件名以時間戳命名,方便查找。
四、重要技術棧
軟件全部模塊採用python語言開發,主要分工如下:
tkinter:GUI軟件界面
requests:爬蟲請求
BeautifulSoup:解析響應數據
pandas:保存csv結果、數據清洗
logging:日誌記錄
軟件界面核心源碼實現:
# 創建主窗口
root = tk.Tk()
root.title('微博搜索採集軟件v1.3')
# 設置窗口大小
root.minsize(width=900, height=650)
日誌記錄核心源碼實現:
def get_logger(self):
self.logger = logging.getLogger(__name__)
# 日誌格式
formatter = '[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s'
# 日誌級別
self.logger.setLevel(logging.DEBUG)
# 控制枱日誌
sh = logging.StreamHandler()
log_formatter = logging.Formatter(formatter, datefmt='%Y-%m-%d %H:%M:%S')
# info日誌文件名
info_file_name = time.strftime("%Y-%m-%d") + '.log'
# 將其保存到特定目錄
case_dir = r'./logs/'
info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,
when='MIDNIGHT',
interval=1,
backupCount=7,
encoding='utf-8')
self.logger.addHandler(sh)
sh.setFormatter(log_formatter)
self.logger.addHandler(info_handler)
info_handler.setFormatter(log_formatter)
return self.logger
爬蟲部分核心源碼實現:
發送請求模塊:
# 發送請求
r = requests.get(url, headers=h1, params=params)
# 解析數據
soup = BS(r.text, 'html.parser')
保存數據模塊:
# 保存數據
df = pd.DataFrame(
{
'關鍵詞': kw,
'頁碼': page,
'微博id': id_list,
'微博鏈接': wb_url_list,
'用户暱稱': name_list,
'用户主頁鏈接': user_link_list,
'發佈時間': create_time_list,
'轉發數': repost_count_list,
'評論數': comment_count_list,
'點贊數': like_count_list,
'微博內容': text_list,
}
)
# 數據保存到csv文件
df.to_csv(self.result_file, mode='a+', index=False, header=header, encoding='utf_8_sig')
出於版權考慮,暫不公開完整源碼,僅向用户提供軟件使用。
五、原創聲明
軟件【爬微博搜索軟件】首發於眾公號"老男孩的平凡之路",歡迎交流!!
我是 @馬哥python説 ,一名10年程序猿,持續分享python乾貨.