初始化

This commit is contained in:
2026-07-18 16:13:52 +08:00
parent c0070f0a5c
commit fe8b417ab6
75 changed files with 12898 additions and 1 deletions
+68
View File
@@ -0,0 +1,68 @@
#!/bin/bash
# =============================================
# 国内服务器:8G headful + HTTP 代理抓取
# =============================================
# 适用场景:
# - 所有新闻源直接使用 headful Playwright 浏览器抓取
# - HTTP 代理 (127.0.0.1:3128) → Privoxy → SOCKS5(ss-local) 访问海外
# - 比海外 RSS 方式抓取更可靠,解决反爬问题
#
# 前置条件:
# sudo apt install xvfb
# Xvfb :99 -screen 0 1280x1024x24 & # 首次启动
# HTTP 代理 127.0.0.1:3128 已运行(privoxy
#
# 用法:
# bash scripts/domestic_crawl_8g.sh # 抓取全部源
# bash scripts/domestic_crawl_8g.sh reuters # 只抓取指定源
# =============================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_DIR"
LOG() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"; }
LOG "══════ 国内 8G headful + HTTP 代理抓取 ══════"
LOG "Profile: 8g_headful"
LOG "内存上限: 7500 MB"
LOG "浏览器模式: headful (Xvfb :99)"
LOG "HTTP 代理: 127.0.0.1:3128 (Privoxy → SOCKS5)"
# ── 加载 .env ──
export $(grep -v '^#' .env | grep -v '^$' | xargs 2>/dev/null || true)
# ── 启动 Xvfb(如果尚未运行)──
if ! pgrep -x "Xvfb" > /dev/null; then
LOG "启动 Xvfb 虚拟显示器 :99 ..."
Xvfb :99 -screen 0 1280x1024x24 -ac +extension RANDR &
sleep 1
LOG "Xvfb 已启动 (PID: $(pgrep -x Xvfb))"
else
LOG "Xvfb 已在运行 (PID: $(pgrep -x Xvfb))"
fi
export DISPLAY=:99
# ── 设置 Profile ──
export EN_NEWS_PROFILE="8g_headful"
# ── 执行抓取 ──
SOURCE_ARG=""
if [ $# -ge 1 ]; then
SOURCE_ARG="--source $1"
LOG "目标源: $1"
else
LOG "目标源: 全部启用源"
fi
PYTHONPATH=. .venv/bin/python3 -c "
from crawler.orchestrator import run_crawl_sync
import sys
source_filter = sys.argv[1] if len(sys.argv) > 1 else None
stats = run_crawl_sync(source_filter=source_filter)
print(f'抓取完成: {stats.sources_crawled} 源, {stats.total_articles} 篇')
" "${1:-}"
LOG "══════ 8G 抓取完成 ✅ ══════"