iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
自我挑戰組

Eric 的創作者重生計畫系列 第 17

DAY 17. Vibe Coding 記錄—從日誌輸出到Python腳本

  • 分享至 

  • xImage
  •  

之前我開始使用蘋果內建的日誌 App 做記錄,雖然不一定是完整的一篇日誌,可能只有短短幾行,但都是珍貴的當下心境的記錄。

這時我開始手癢,想要借助 AI 分析我的趨勢,但這時輸出成為一大問題,幸好 macOS 26 已經實裝日誌 App,可直接在電腦上匯出,卻發現輸出的都是一篇篇的 html,夾在資料夾裡,以日期為名,將檔案取出很容易,但 NotebookLM 有檔案限制,該怎麼辦呢?

這時我使出 Gemini

我有大量html,想要轉換成純文字,按照順序整合成完整單一文件

最初 Gemini 提供了 python 作為解方,甚至自動生成一份 PDF 文件的說明書,但我想讓環境更加精簡,所以要求 Google Colab,接著給我以下建議:

💡 如何在 Google Colab 上處理您的 HTML 合併任務?

  1. 免安裝環境 :您不需要在自己的電腦上安裝 Python,打開瀏覽器就能直接寫程式。
  2. 內建常用套件 :像是網頁解析必備的 BeautifulSouprequests ,Colab 都已經預先安裝好了。
  3. 檔案上傳與雲端整合 :您可以直接把 HTML 壓縮檔(.zip)上傳到 Colab,或是直接連結您的 Google 雲端硬碟(Google Drive)來讀取與儲存檔案。

步驟 1:開啟並準備環境

  1. 前往
    Google Colab
    並登入您的 Google 帳號,點選「新增筆記本」。
  2. 將您的大量 HTML 檔案打包成一個 html_files.zip 壓縮檔。
  3. 點選 Colab 左側的「資料夾」圖示,將 html_files.zip 直接拖曳上傳進去。

步驟 2:貼上並執行程式碼

在 Colab 的程式碼儲存格中,貼上以下這段針對 Colab 環境優化過的程式碼,然後點擊左側的「執行」按鈕:

import os
import re
import zipfile
from bs4 import BeautifulSoup

# 1. 解壓縮您的 HTML 檔案
zip_path = 'html_files.zip' # 請確認上傳的檔名與此處一致
extract_dir = 'extracted_html'

if os.path.exists(zip_path):
    with zipfile.ZipFile(zip_path, 'r') as zip_ref:
        zip_ref.extractall(extract_dir)
    print("解壓縮完成!")
else:
    print("找不到壓縮檔,請確認是否已成功上傳 html_files.zip")

# 自然排序函數
def natural_sort_key(s):
    return [int(text) if text.isdigit() else text.lower() for text in re.split(r'(\d+)', s)]

# 2. 開始批次轉換與合併
output_file = 'combined_all_text.txt'

# 獲取解壓後的資料夾內所有 html 檔案
file_list = []
for root, dirs, files in os.walk(extract_dir):
    for f in files:
        if f.lower().endswith(('.html', '.htm')):
            file_list.append(os.path.join(root, f))

# 按檔案路徑/檔名進行自然排序
file_list.sort(key=natural_sort_key)

print(f"找到 {len(file_list)} 個 HTML 檔案,開始按順序轉換...")

with open(output_file, 'w', encoding='utf-8') as outfile:
    for index, file_path in enumerate(file_list, start=1):
        file_name = os.path.basename(file_path)
        try:
            with open(file_path, 'r', encoding='utf-8', errors='ignore') as infile:
                html_content = infile.read()
            
            soup = BeautifulSoup(html_content, 'html.parser')
            
            # 剔除 JavaScript 與 CSS
            for script_or_style in soup(["script", "style"]):
                script_or_style.decompose()
            
            text_content = soup.get_text()
            
            # 清理空白行
            lines = (line.strip() for line in text_content.splitlines())
            clean_text = '\n'.join(line for line in lines if line)
            
            # 寫入單一文件
            outfile.write(f"\n\n{'='*50}\n來源: {file_name}\n{'='*50}\n\n")
            outfile.write(clean_text)
            
        except Exception as e:
            print(f"處理 {file_name} 時發生錯誤: {e}")

print(f"\n全部完成!已成功整合成單一文件:{output_file}")

步驟 3:下載成品

程式執行完畢後,點擊 Colab 左側資料夾面板的「重新整理」按鈕,您就會看到一個名為 combined_all_text.txt 的全新純文字檔案。點擊它右邊的三個點,選擇「下載」即可存回電腦。

⚠️ Google Colab 的小限制(使用注意)

  • 不適合處理極度隱私的個資 :雖然 Colab 很安全,但它是雲端環境。如果您的 HTML 內含有非常敏感的商業機密或個人隱私資料,建議還是在本機電腦執行 Python 比較安全。
  • 檔案會定時清空 :Colab 的虛擬機在閒置或關閉瀏覽器一段時間後會自動重設。也就是說,上傳的 html_files.zip 和產出的 combined_all_text.txt 在隔天就會消失, 請記得在執行完後立刻下載成品

在這之前我的 python 程度僅限於有上過課,用過 Colab 的程度,而在這之後開啟我的 Gemini X Colab 的開發之路……


上一篇
DAY 16. 🃏我是如何運用塔羅做決策與問題指引
下一篇
DAY 18. 我的小說速讀神器:怠惰小說+NotebookLM
系列文
Eric 的創作者重生計畫18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言