博客 / 詳情

返回

【技術分享】用python開發採集軟件,爬微博搜索關鍵詞下的帖子

今天給大家分享一款我用Python開發的實用工具——【爬微博搜索軟件】,專為需要批量獲取微博內容的用户打造,解決了常規採集的諸多痛點。

一、工具開發背景與核心優勢

1.1 開發初衷

微博作為國內頂流社交媒體平台,以實時性強、熱點傳播快、KOL影響力大著稱。無論是熱點事件追蹤、行業動態分析,還是用户輿論調研,微博上的海量文字、圖片內容都極具參考價值。但實際操作中,大家常會遇到採集頁數受限、多關鍵詞切換繁瑣、數據易丟失等問題。基於這些需求,我開發了這款採集工具,旨在提供更高效、穩定的內容獲取方案。

1.2 界面展示

工具界面簡潔直觀,無需複雜操作,上手即用:
圖片
軟件界面

1.3 結果預覽

採集數據全面且結構化,包含11個核心字段,方便後續分析使用:
圖片
採集結果.csv核心字段包括:關鍵詞、頁碼、微博ID、微博鏈接、用户暱稱、用户主頁鏈接、發佈時間、轉發數、評論數、點贊數、微博內容。

1.4 演示視頻

工具運行全程可視化,具體操作流程可查看演示視頻,直觀瞭解採集全流程。原文有。

1.5 重要説明

  • 支持Windows系統直接雙擊啓動,無需安裝Python運行環境,操作門檻低。經多次測試,工具運行穩定,可持續採集不中斷。
  • 需提前在cookie.txt文件中填寫個人微博cookie(內附詳細獲取教程),便於重複使用。
  • 支持多關鍵詞並行採集,關鍵詞之間用|分隔即可。
  • 可自定義採集時間範圍,格式統一為YYYY-MM-DD,精準鎖定目標內容。
  • 採集過程中按頁保存CSV文件,每1-2秒自動存儲一次,避免異常中斷導致數據丟失。
  • 生成專屬log日誌文件,詳細記錄運行狀態,方便問題回溯與排查。
  • 工具持續迭代更新,後續將不斷優化功能體驗。

二、核心開發技術棧

2.1 整體框架

工具整體基於Python語言開發,各模塊分工明確:

tkinter:搭建簡潔易用的GUI操作界面
requests:處理網絡爬蟲請求,確保數據獲取穩定
BeautifulSoup:解析響應數據,精準提取核心信息
pandas:負責CSV文件保存與數據清洗,保證數據規範性
logging:實現運行日誌記錄,便於問題定位

注:出於版權保護,暫不公開源碼,僅提供工具使用權限。

2.2 部分源碼

1、向頁面發送請求和解析數據部分:

# 發送請求
r = requests.get(url, headers=h1, params=params)
# 解析數據
soup = BS(r.text, 'html.parser')

2、保存數據部分:

# 保存數據
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,
    }
)
if os.path.exists(self.result_file):  # 如果文件存在,不再設置表頭
    header = False
else:  # 否則,設置csv文件表頭
    header = True
# 保存csv文件
df.to_csv(self.result_file, mode='a+', index=False, header=header, encoding='utf_8_sig')
self.tk_show('結果保存成功:{}'.format(self.result_file))

3、日誌部分:

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

三、詳細操作指南

3.1 準備工作:

獲取並填寫cookie打開PC端微博,進入搜索頁面並完成登錄。按教程打開瀏覽器開發者工具,找到對應Cookie信息並複製。
圖片
CK獲取方法將複製的Cookie值粘貼到工具文件夾中的cookie.txt文件內,保存即可。

3.2 賬號登錄流程

打開工具後,進入登錄界面,輸入賬號密碼完成驗證,即可啓動採集功能。

3.3 開始採集

操作在工具界面填寫核心採集條件:
搜索關鍵詞:多個關鍵詞用|分隔(示例:小米SU7|蔚來ES6|理想L6)
日期範圍:填寫格式為YYYY-MM-DD,設定採集的時間區間
採集最大頁:建議單關鍵詞單時間段不超過50頁,

保障採集穩定性點擊”開始執行”按鈕,工具將自動啓動採集任務。
採集過程中請勿直接打開CSV文件,可複製副本查看實時數據,避免採集中斷。 image.png

四、使用相關説明

本工具僅用於合法的信息收集與研究用途,禁止用於任何違法違規活動。 如因違規使用工具導致的任何法律責任,均由使用者自行承擔,與工具開發者無關。

五、版本更新日誌

  • 2025.3.17(v1.3版):新增爬取顆粒度選擇功能,支持按小時或按天採集,自由控制數據密度;File菜單新增意見反饋入口,方便及時收集問題並優化。
  • 2025.1.9(v1.2版):優化循環時間顆粒度,由原來的按天統計改為按小時統計,採集更精準。

六、作者聲明

本工具為原創開發,如需瞭解更多技術細節或進行專業交流,可通過正規渠道聯繫開發者(首發公眾號:老男孩的平凡之路)。工具使用需嚴格遵守相關法律法規和平台規定。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.