源码
项目地址
项目框架
- scrapy负责定时抓取数据到mongodb中
- 每小时定时生成echarts需要的数据, 以json格式保存
- flask读取json数据之后用jinja2渲染到echarts里作图, 使用的都是修改过的(毫无美感的)官方例子
整个过程大致如图:
1
2
3
4
5
6
|
spider pipelines.py
shixiseng.com------>scrapy----------->mongodb
|
| model.py
template.html view.py v
echart<-------------flask<----------.json
|
Prerequisite:
- 定时工具: crontab(调度scrapy), apscheduler(调度flask)
- 数据库: mongodb + pymongo
- 后端: flask + flask-pymongo(负责flask和mongodb的对接, 其实也可以不用)
- 绘图: echarts
安装 (Ubuntu 14.04/16.04)
- apscheduler
apscheduler官方文档
1
|
$ pip install apscheduler
|
- mongodb & pymongo
mongodb官方文档, pymongo官方文档
1
2
3
4
5
6
7
8
9
10
11
|
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
# Ubuntu 14.04
$ echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
# Ubuntu 16.04
$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
# pymongo
$ python -m pip install pymongo
|
- flask & flask-pymongo
flask中文文档, flask-pymongo官方文档
1
2
|
$ sudo pip install Flask # 推荐使用virtualenv, 这里懒得用了
$ pip install Flask-PyMongo
|
测试
cd
到git目录下
1
2
|
$ sudo service mongod start # 启动mongod (其实不用, 因为已经预加载了json)
$ python visualization/view.py
|
进入127.0.0.1:5000
下预览吧
(2023/02/14更新: 以下本来是一个 echarts 图标源数据, 需要安装插件渲染, 但因为年久失修没有维护, 我已经禁用了它, 请参考文末的链接)
一些坑
- 这篇blog中插入了echarts图表, 参见这篇文章, 并做了一些魔改以适应复杂的图表
- falsk中的APScheduler貌似不好用, 最后自己使用丑陋的方法写了个独立的py文件处理生成的json, 再用crontab定时运行
待续