Skip to content

silunuo/PythonWarCrawler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PythonWarCrawler 使用说明

本程序会从 Bilibili、百度贴吧、Reddit、YouTube 抓取真实评论,然后做清洗、分词、情感分析、关键词提取、主题分类,最后生成 pyecharts 图表和结论。


1. 克隆项目

从远程仓库克隆:

git clone https://github.com/silunuo/PythonWarCrawler.git
cd PythonWarCrawler

如果你用 SSH:

git clone git@github.com:silunuo/PythonWarCrawler.git
cd PythonWarCrawler

2. 本地环境

建议使用 Python 3.10。依赖安装到项目目录里的 .venv,pip 缓存放到 .pip-cache

Windows PowerShell:

python -m venv .venv
$env:PIP_CACHE_DIR = (Join-Path (Get-Location) '.pip-cache')

如果需要代理,安装依赖前先设置(根据你的客户端设置而定):

$env:HTTP_PROXY = 'http://127.0.0.1:7890'
$env:HTTPS_PROXY = 'http://127.0.0.1:7890'

安装依赖:

.\.venv\Scripts\python -m pip install -r requirements.txt

macOS / Linux:

python3 -m venv .venv
export PIP_CACHE_DIR="$PWD/.pip-cache"

如果需要代理:

export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"

安装依赖:

.venv/bin/python -m pip install -r requirements.txt

3. 配置代理和关键词

主要改 config.json

字段 说明
proxy.enabled 是否使用代理
proxy.http / proxy.https 代理地址,默认是 127.0.0.1:7890
date_range.enabled 是否按日期范围过滤,默认开启
date_range.start_date 默认开始日期,当前是 2026-02-28
date_range.end_date 默认结束日期,null 表示当天
crawl.target_total 正式抓取目标数量,默认 3000
crawl.queries_cn 中文关键词,用于 Bilibili 和贴吧
crawl.queries_en 英文关键词,用于 Reddit 和 YouTube
crawl.tieba_forums 贴吧列表
paths.raw_comments 原始 CSV 输出路径
paths.clean_comments 分析后 CSV 输出路径
paths.dashboard_html 图表页面输出路径

不用代理时,把 proxy.enabled 改成 false

"proxy": {
  "enabled": false,
  "http": "http://127.0.0.1:7890",
  "https": "http://127.0.0.1:7890"
}

4. 快速验证

先跑少量数据,确认三个平台都能访问:

Windows:

.\.venv\Scripts\python main.py all --smoke

macOS / Linux:

.venv/bin/python main.py all --smoke

成功后会生成这些文件:

data/raw/comments.csv
data/processed/analyzed_comments.csv
output/summary.json
output/dashboard.html
output/conclusions.md

如果想指定日期范围:

.\.venv\Scripts\python main.py all --smoke --start-date 2026-02-28 --end-date 2026-05-26

如果想临时关闭日期过滤:

.\.venv\Scripts\python main.py all --smoke --no-date-filter

5. 分步运行

如果想看每一步结果,可以分步执行。

5.1 爬取评论

.\.venv\Scripts\python main.py crawl --smoke

输出:

data/raw/comments.csv

5.2 清洗和分析

.\.venv\Scripts\python main.py analyze

输出:

data/processed/analyzed_comments.csv
output/summary.json

5.3 生成图表和结论

.\.venv\Scripts\python main.py visualize

输出:

output/dashboard.html
output/conclusions.md

6. 正式抓取 3000 条

Windows:

.\.venv\Scripts\python main.py all --target-total 3000

macOS / Linux:

.venv/bin/python main.py all --target-total 3000

正式模式会检查有效评论数量。如果真实平台返回的数据少于 3000 条,程序会退出并提示实际数量。程序不会补假数据。

默认会按 config.json 里的日期范围过滤。当前默认是从 2026-02-28 到当天。


7. 查看结果

文件 怎么看
data/raw/comments.csv 看原始评论,字段有平台、内容、时间、用户名、点赞数、链接、语言
data/processed/analyzed_comments.csv tokenssentiment_scoresentimentcategory
output/dashboard.html 用浏览器打开,看 pyecharts 图表
output/conclusions.md 看自动生成的结论
output/summary.json 看统计结果,主要给图表使用

8. 验证清单

运行完后检查:

  • .venv 在项目目录里。
  • .pip-cache 在项目目录里。
  • data/raw/comments.csv 已生成。
  • data/processed/analyzed_comments.csv 已生成。
  • output/dashboard.html 已生成。
  • output/conclusions.md 已生成。
  • comments.csv 里有 BilibiliTiebaRedditYouTube 四个平台。
  • 正式抓取时没有人为补数据。

可用下面命令检查依赖和语法:

.\.venv\Scripts\python -m pip check
.\.venv\Scripts\python -m compileall main.py src

9. 常见问题

Bilibili 出现 HTTP 412

这是平台拦截请求。程序会重试,也会继续跑后面的关键词。可以稍后再跑,或者把 config.json 里的 request.delay_seconds 调大。

贴吧提示某个吧暂不开放

程序会跳过这个吧,继续抓其他贴吧。可以在 crawl.tieba_forums 里换别的相关贴吧。

Reddit 出现 502

程序会先用公开评论接口,失败后再用 Reddit JSON 接口。代理不稳定时,可以稍后再跑。

YouTube 抓不到评论

YouTube 评论依赖网页里的公开 continuation 数据。部分视频会关闭评论,或者网页返回的数据里没有评论入口,这种视频会被跳过。

正式抓不到 3000 条

先确认代理可用,再修改这些参数:

"bilibili": {
  "search_pages": 8,
  "comment_pages_per_video": 8
},
"tieba": {
  "thread_pages_per_forum": 6,
  "post_pages_per_thread": 6
},
"reddit": {
  "pages_per_query": 8
},
"youtube": {
  "search_pages": 2,
  "videos_per_query": 8,
  "comment_pages_per_video": 4
}

页数越大,运行时间越长,被限流的概率也会变高。


10. 项目结构

.
├── main.py
├── config.json
├── requirements.txt
├── resources/
├── src/
│   ├── analysis/
│   ├── common/
│   ├── crawlers/
│   └── visualization/
├── data/
└── output/

About

lession work

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages