第二讲:环境搭建与工具链
说实话,做舆情分析这件事,最怕的不是算法不会写,而是环境配不好。我见过太多同学,代码写得挺溜,结果卡在安装依赖上,一卡就是半天。这一讲,咱们就把这套工具链彻底捋顺。
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,那就成了。
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 就对了
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 里新建笔记本时,就能选择「舆情分析环境」这个内核了。
2.5 知识体系总览
下面这张图,是我梳理的这套工具链的整体结构。你可以把它当作一张地图,后面每个环节都能在这里找到位置。
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 用于探索性分析和原型验证
- 装完一定要验证,别等到写代码才发现环境有问题