本軟件工具僅限於學術交流使用,嚴格遵循相關法律法規,符合平台內容合法合規性,禁止用於任何商業用途!
一、背景分析
1.1 開發背景與功能介紹
我是 @馬哥python説 ,一枚10年+程序猿,現全職獨立開發。
曾經和很多同學聊過,他們希望有一個工具,可以把微博指定用户的已發佈帖子的數據採集下來,然後做數據分析使用。為了滿足這類需求,我特意用python開發了這款工具:weibo_user_post_tool
軟件運行界面:
採集結果展示:
以上。
1.2 軟件説明
幾點重要説明,請詳讀了解:
- Windows系統、Mac系統均可運行
- 軟件通過接口協議爬取,並非通過模擬瀏覽器等RPA類工具,穩定性較高!
- 軟件運行完成後,會在當前文件夾(即,軟件所在文件夾)生成csv結果文件
- 爬取過程中,每爬一頁,存一次csv。並非爬完最後一次性保存!防止因異常中斷導致丟失前面的數據(每頁請求間隔1~2s)
- 爬取過程中,有log文件詳細記錄運行過程,方便回溯
- 採集結果有13個字段,含:博主暱稱,博主id,頁碼,微博id,微博bid,微博鏈接,發佈時間,發佈於,轉發數,評論數,點贊數,話題標籤,微博內容
二、主要技術
2.1 模塊介紹
軟件全部模塊採用python語言開發,主要分工如下:
tkinter:GUI軟件界面
requests:爬蟲請求
json:解析響應數據
time:間隔等待,防止反爬
pandas:保存csv結果
logging:日誌記錄
出於版權考慮,暫不公開完整源碼,僅向用户提供軟件使用權。
2.2 部分源碼
軟件界面:
# 創建主窗口
root = tk.Tk()
root.title('爬微博博主軟件v1.0 | 馬哥python説')
# 設置窗口大小
root.minsize(width=850, height=660)
爬蟲請求:
# 發送請求
r = requests.get(url, headers=h1, params=params)
# 接收響應數據
json_data = r.json()
保存數據:
# 保存數據到DF
df = pd.DataFrame(
{
'博主暱稱': name_list,
'博主id': user_id,
'頁碼': page,
'微博id': id_list,
'微博bid': bid_list,
'微博鏈接': wb_url_list,
'發佈時間': create_time_list,
'發佈於': region_name_list,
'轉發數': reposts_count_list,
'評論數': comments_count_list,
'點贊數': like_count_list,
'話題標籤': topic_list,
'微博內容': text_list,
}
)
# 保存csv文件
df.to_csv(self.result_file, mode='a+', index=False, header=header, encoding='utf_8_sig')
日誌記錄:
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
日誌文件截圖:
以上。
三、演示視頻
軟件使用過程演示:【軟件演示】指定博主爬微博帖子的批量採集工具
END、原創聲明
工具【爬微博博主軟件】首發於眾公號"老男孩的平凡之路",歡迎交流!!