第二讲:环境搭建与工具链

说实话,做舆情分析这件事,最怕的不是算法不会写,而是环境配不好。我见过太多同学,代码写得挺溜,结果卡在安装依赖上,一卡就是半天。这一讲,咱们就把这套工具链彻底捋顺。

2.1 Python虚拟环境:给你的项目一个干净的家

为什么要用虚拟环境?说白了,就是防止不同项目之间的依赖打架。我早期做项目时吃过这个亏——一个项目用Scrapy 1.8,另一个用2.4,结果全局装完,两个都跑不起来。

我个人习惯用 venv,Python 3.3+ 自带,不用额外装。操作很简单:

# 创建虚拟环境
python -m venv venv_opinion

# 激活(Windows)
venv_opinion\Scripts\activate

# 激活(Mac/Linux)
source venv_opinion/bin/activate

# 退出
deactivate
小技巧: 我习惯把虚拟环境建在项目根目录下,取名 venv_xxx,这样一眼就能看出来是哪个项目的。另外,记得把 venv_* 加到 .gitignore 里,别把环境文件提交到仓库。

2.2 Scrapy框架安装:舆情爬虫的瑞士军刀

Scrapy 是我做舆情数据获取的首选框架。它不像 requests + BeautifulSoup 那样需要自己写调度逻辑,Scrapy 自带异步引擎、中间件、管道,一套下来省不少事。

安装前,先确保虚拟环境已激活。然后:

pip install scrapy

嗯,这里要注意。如果你在 Windows 上安装,可能会遇到 Twisted 编译报错。我曾经被这个坑过两次,后来学乖了——直接装预编译包:

pip install scrapy --only-binary :all:

验证安装是否成功:

scrapy version

如果输出版本号,比如 Scrapy 2.11.0,那就成了。

避坑指南: 我曾经在 Python 3.12 上装 Scrapy 2.9,结果 Twisted 不兼容。建议用 Python 3.10 或 3.11,兼容性最好。你想想看,要是装了半天发现版本不对,多闹心。

2.3 MongoDB与Redis安装:数据存储的双引擎

舆情数据有两个特点:量大、实时性要求高。MongoDB 管存储,Redis 管缓存和调度,两者配合起来很舒服。

MongoDB 安装

MongoDB 存的是 JSON 文档,跟 Python 的字典结构天然匹配。我一般用社区版,够用了。

# Mac(用 Homebrew)
brew install mongodb-community
brew services start mongodb-community

# Ubuntu
sudo apt-get install -y mongodb-org
sudo systemctl start mongod

# Windows
# 去官网下载 .msi 安装包,一路下一步就行

装完后,用 mongo 命令进入 shell,能连上就说明没问题。

Redis 安装

Redis 在舆情系统里主要干两件事:一是做 Scrapy 的调度队列,二是缓存去重。安装同样简单:

# Mac
brew install redis
brew services start redis

# Ubuntu
sudo apt-get install redis-server
sudo systemctl start redis

# Windows
# 去 GitHub 下载 Redis for Windows 的 MSI 包

验证方式:

redis-cli ping
# 返回 PONG 就对了
我的经验: 开发环境用默认配置就行。但生产环境一定要改密码和绑定 IP,不然容易被挖矿脚本盯上。我之前有个测试服务器没设密码,第二天 CPU 跑满,一看被人拿去挖门罗币了。

2.4 Jupyter Notebook配置:边写边看的利器

做舆情分析,经常需要边写代码边看结果。Jupyter Notebook 在这方面确实方便。我个人习惯用 jupyter lab,界面更现代,功能也更全。

pip install jupyterlab

# 启动
jupyter lab

启动后浏览器会自动打开,默认端口是 8888。你可以在里面新建 Python 3 笔记本,直接写代码、画图、看结果。

为了让 Jupyter 能用到虚拟环境里的包,需要加个内核:

pip install ipykernel
python -m ipykernel install --user --name=venv_opinion --display-name="舆情分析环境"

这样在 Jupyter 里新建笔记本时,就能选择「舆情分析环境」这个内核了。

小建议: 我习惯在 Jupyter 里先做探索性分析,把数据清洗、特征提取的逻辑跑通,然后再封装成 .py 脚本。这样开发效率高,也不容易出错。

2.5 知识体系总览

下面这张图,是我梳理的这套工具链的整体结构。你可以把它当作一张地图,后面每个环节都能在这里找到位置。

舆情数据获取与自动化分析工具链 数据获取层 Scrapy 爬虫框架 数据存储层 MongoDB + Redis 分析环境层 Jupyter Notebook Python 虚拟环境(venv) 数据流向:爬虫获取 → 存储到 MongoDB/Redis → Jupyter 分析 虚拟环境贯穿始终,隔离项目依赖

2.6 环境验证清单

所有东西装完后,我建议你跑一遍这个验证脚本,确保每个环节都通:

# 验证脚本:check_env.py
import sys
import scrapy
import pymongo
import redis

print(f"Python 版本: {sys.version}")
print(f"Scrapy 版本: {scrapy.__version__}")

# 测试 MongoDB 连接
client = pymongo.MongoClient("mongodb://localhost:27017/")
print(f"MongoDB 连接: {'成功' if client.server_info() else '失败'}")

# 测试 Redis 连接
r = redis.Redis(host='localhost', port=6379, db=0)
print(f"Redis 连接: {'成功' if r.ping() else '失败'}")

如果全部输出正常,恭喜你,环境搭建这一步就稳了。后面咱们就可以专心写爬虫、做分析了。

核心要点:
  • 虚拟环境是基础,每个项目单独创建
  • Scrapy 负责数据获取,MongoDB 负责存储,Redis 负责调度和缓存
  • Jupyter Notebook 用于探索性分析和原型验证
  • 装完一定要验证,别等到写代码才发现环境有问题

专注资料整理