Files
hbr-crawler/資料庫設定說明.md
DonaldFang 方士碩 f524713cb6 Initial commit: HBR 文章爬蟲專案
- Scrapy 爬蟲框架,爬取 HBR 繁體中文文章
- Flask Web 應用程式,提供文章查詢介面
- SQL Server 資料庫整合
- 自動化排程與郵件通知功能

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 17:19:56 +08:00

181 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 資料庫設定說明
## 資料庫連線資訊
- **資料庫類型**: MySQL / MariaDB
- **主機位址**: mysql.theaken.com
- **埠號**: 33306
- **資料庫名稱**: HBR_scraper
- **使用者名稱**: A101
- **密碼**: Aa123456
## 快速開始
### 1. 安裝依賴套件
```bash
pip install -r requirements.txt
```
### 2. 測試資料庫連線
執行測試腳本來驗證資料庫連線並建立必要的資料表:
```bash
python test_db_connection.py
```
此腳本會執行以下測試:
1. 測試基本資料庫連線
2. 建立 HBR_scraper 資料庫(如果不存在)
3. 測試連接到 HBR_scraper 資料庫
4. 建立資料表結構articles, tags, article_tags
5. 驗證資料表是否建立成功
### 3. 執行爬蟲
測試完成後,可以執行爬蟲,資料會自動儲存到資料庫:
```bash
cd hbr_crawler
scrapy crawl hbr
```
## 資料表結構
### articles文章主表
| 欄位 | 類型 | 說明 |
|------|------|------|
| id | BIGINT | 主鍵,自動遞增 |
| title | VARCHAR(500) | 文章標題 |
| url | VARCHAR(1000) | 文章網址(唯一索引) |
| author | VARCHAR(200) | 作者名稱 |
| publish_date | DATETIME | 發布日期 |
| summary | TEXT | 文章摘要 |
| is_paywalled | TINYINT(1) | 是否為付費文章 |
| category | VARCHAR(100) | 文章分類 |
| content | TEXT | 文章內容 |
| created_at | TIMESTAMP | 建立時間 |
| updated_at | TIMESTAMP | 更新時間 |
| crawled_at | DATETIME | 爬取時間 |
### tags標籤表
| 欄位 | 類型 | 說明 |
|------|------|------|
| id | BIGINT | 主鍵,自動遞增 |
| name | VARCHAR(100) | 標籤名稱(唯一索引) |
| created_at | TIMESTAMP | 建立時間 |
### article_tags文章標籤關聯表
| 欄位 | 類型 | 說明 |
|------|------|------|
| id | BIGINT | 主鍵,自動遞增 |
| article_id | BIGINT | 文章 ID外鍵 |
| tag_id | BIGINT | 標籤 ID外鍵 |
| created_at | TIMESTAMP | 建立時間 |
## 資料處理邏輯
### 重複文章處理
- 系統會依據 URL 檢查文章是否已存在
- 如果文章已存在,會更新現有記錄(更新 `crawled_at` 時間戳和所有欄位)
- 如果文章不存在,會插入新記錄
### 標籤處理
- 標籤採用正規化設計tags 表 + article_tags 關聯表)
- 系統會自動建立新標籤(如果不存在)
- 使用標籤快取機制,避免重複查詢資料庫
## 環境變數設定(可選)
如果需要透過環境變數設定資料庫連線資訊,可以設定:
```bash
export DB_HOST=mysql.theaken.com
export DB_PORT=33306
export DB_USER=A101
export DB_PASSWORD=Aa123456
export DB_NAME=HBR_scraper
```
系統會優先使用環境變數,如果沒有設定則使用 `settings.py` 中的預設值。
## 查詢資料範例
### 查詢所有文章
```sql
SELECT * FROM articles ORDER BY crawled_at DESC;
```
### 查詢特定分類的文章
```sql
SELECT * FROM articles WHERE category = 'management' ORDER BY publish_date DESC;
```
### 查詢付費文章
```sql
SELECT * FROM articles WHERE is_paywalled = 1;
```
### 查詢文章及其標籤
```sql
SELECT
a.id,
a.title,
a.url,
GROUP_CONCAT(t.name) as tags
FROM articles a
LEFT JOIN article_tags at ON a.id = at.article_id
LEFT JOIN tags t ON at.tag_id = t.id
GROUP BY a.id, a.title, a.url;
```
### 查詢特定標籤的文章
```sql
SELECT DISTINCT a.*
FROM articles a
INNER JOIN article_tags at ON a.id = at.article_id
INNER JOIN tags t ON at.tag_id = t.id
WHERE t.name = '領導力';
```
## 故障排除
### 連線失敗
1. 檢查網路連線
2. 確認資料庫主機位址和埠號正確
3. 確認使用者名稱和密碼正確
4. 檢查防火牆設定
### 資料表建立失敗
1. 確認使用者有 CREATE TABLE 權限
2. 檢查 SQL 檔案路徑是否正確
3. 查看錯誤日誌了解詳細錯誤訊息
### 資料插入失敗
1. 檢查資料庫連線是否正常
2. 確認資料表結構是否正確建立
3. 檢查資料格式是否符合資料表定義
## 注意事項
- 資料庫連線資訊已寫入 `settings.py`,請勿將此檔案提交到公開版本控制系統
- 建議使用環境變數或設定檔管理敏感資訊
- 定期備份資料庫
- 監控資料庫空間使用情況