這是一個用於爬取 Anime1.me 網站動畫資訊的 Python 程式。
- 🚀 智慧爬取: 自動判斷是否需要完整爬取或增量更新
- 📊 資料排序: 動畫資料按標題自動排序
- 🔄 重試機制: 內建網路請求重試和錯誤處理
- 🛡️ 友善爬取: 包含延遲機制,避免對伺服器造成負擔
- 📁 模組化設計: 程式碼分離,易於維護和擴展
pip install -r requirements.txtpython main.py程式會自動:
- 檢查是否存在現有資料檔案
- 如果沒有資料,從 2017 年開始完整爬取
- 如果有資料,只更新最近三個季度的內容
anime1_crawler/
├── main.py # 主程式入口
├── config.py # 配置設定
├── data_manager.py # 資料管理模組
├── parser.py # 網頁解析模組
├── utils.py # 工具函數模組
├── requirements.txt # 依賴套件
├── README.md # 說明文件
├── LICENSE # MIT 授權文件
├── test/
│ └── test_crawler.py # 測試腳本
└── docs/
└── anime_data.json # 輸出的動畫資料
集中管理所有配置參數,包括:
- 網路請求設定(延遲時間、重試次數)
- 資料檔案路徑
- 季節對應關係
- 日誌設定
負責處理動畫資料的:
- 載入現有資料
- 保存新增/更新的動畫資訊
- 按標題排序
- 執行緒安全的檔案操作
包含兩個主要類別:
AnimeParser: 解析單一網頁的動畫資訊CrawlerEngine: 協調批量爬取作業
提供通用功能:
- 重試裝飾器
- 季節轉換
- URL 編碼
- 延遲控制
- 時間計算
簡潔的主程式,協調各模組完成爬取工作。
可以在 config.py 中調整以下設定:
# 修改開始爬取的年份
DATA_CONFIG = {
'start_year': 2017, # 改為您想要的起始年份
...
}
# 調整延遲時間
REQUEST_CONFIG = {
'request_delay_range': (1, 3), # 請求間延遲 1-3 秒
'season_delay_range': (3, 5), # 季節間延遲 3-5 秒
...
}動畫資料會保存在 docs/anime_data.json,格式如下:
{
"2024": {
"spring": [
{
"title": "動畫標題",
"cat_id": "123"
}
]
}
}程式包含多層錯誤處理:
- 網路請求失敗會自動重試
- 解析錯誤會記錄日誌並繼續處理其他項目
- 檔案操作錯誤會有詳細的錯誤訊息
- 尊重網站: 程式內建延遲機制,請勿修改為過於頻繁的請求
- 資料更新: 增量更新只會處理最近三個季度的資料
- 檔案權限: 確保程式有權限在
docs/目錄建立和寫入檔案
本專案採用 MIT 授權條款。請參閱 LICENSE 文件以獲取更多資訊。
請遵守目標網站的使用條款和 robots.txt 規範。