## 项目简介
(Java/Python)爬虫 + MySQL + Redis项目.
此项目分为2大部分, 离线爬虫和实时爬虫.
离线爬取下来的数据可用于后续的数据分析(我计划将其用于我的毕业设计).
实时爬虫获得的数据可以实现**股票降价通知的功能**.
未来会将数据分析的可视化部署到服务器上, 并添加**股票降价通知的功能**的web接口.
#### 离线爬虫
执行频率为每天1次, 爬取当天的4192支股票的统计信息. 并存放到数据库中.
并定期导出相应的表用于数据分析.
#### 实时爬虫
执行频率为80秒一轮, 股票交易时间为周一至周五的9:30-11:30以及13:00-15:00. 每轮爬取4192支股票的实时价格信息. 并与Redis中存储的订阅信息进行交互, 如果发现了满足降价通知或下跌预警的条件, 就发送邮件通知订阅者.
每天产生的数据量大约为74万条. 在每天的股票交易结束后写回数据库.
## 运行说明
首先要保证本机已经安装MySQL和Redis. 远程连接也可以, 但是需要修改源代码重新Build.
**注意, 数据库密码和邮箱授权码已经过脱敏处理, 请务必配置成自己的密码和授权码然后再构建**
#### 离线爬虫部分
采用单线程Python爬虫 + MySQL. 主要文件在`./PythonCrawler`中
1. 运行文件`databaseInitialization.py`初始化数据库和相应的表, 数据库连接默认是`localhost:3306`
2. 运行文件`findAllStocksCode.py`获得所有4192支股票的股票代码和名称, 这时会得到`StockCodes.txt`文件
3. 修改`insertRecords.py`等以`"insertRecords"`开头的文件中的股票信息路径, 修改为`StockCodes.txt`文件的绝对路径, `crontab`定时执行需要绝对路径.
```python
with open("/home/haiyang/StockCodes.txt", "r", encoding="utf-8") as f:
```
6. 开启定时爬虫`crontab -e`, 如果对每次执行的时间没有限制, **推荐**使用单线程爬虫`insertRecords.py`. 如果对时间有要求, 可以使用进程池, 线程池, 线程池+连接池, 异步IO等方法加速. **但是爬取失败的可能性会增加.**
+ 单线程爬虫`insertRecords.py`的参考时间为406秒
+ 多进程爬虫`insertRecordsMultiProcesses.py` 的参考时间为150秒
+ 多线程爬虫`insertRecordsMultiThread.py`的参考时间为146秒
+ 多线程+数据库连接池爬虫`insertRecordsMultiThreadConnectionPool.py`的参考时间为143秒
5. 爬取的数据可以通过`SQLQuery.java`中的静态方法来查询. 可以查询某支股票最近n天的数据, 也可以给定开始时间和结束时间查询某支股票在此区间内的全部信息.
#### 实时爬虫部分
采用多线程java爬虫, 使用http连接池加速, 使用Redis存储订阅者信息, 使用生产者消费者模型. 爬虫主要文件在`JavaCrawler`中.
1. 确保已经生成`StockCodes.txt`文件并在中`InfoProducer.java`配置正确的路径
```java
private static final String CODELISTLOCATION = "/home/haiyang/crawler/StockCodes.txt";
```
2. 确保可以建立正确的MySQL和Redis连接. 默认为`localhost:3306`和`localhost:6379`. 非默认配置的话请修改`MySQLConnection.java`和`JedisUtil.java`中对应的配置.
3. 执行下面的MySQL命令, 确保在`stocks`数据库中建立正确的储存实时爬虫信息的表. `stocks`数据库是前面离线爬虫中`databaseInitialization.py`建立的数据库.
```mysql
USE stocks;
DROP TABLE IF EXISTS record_minute;
CREATE TABLE record_minute(
id BIGINT auto_increment unique primary key,
stockcode char(6),
recordtime char(20),
stockprice INT);
```
4. 使用maven打包, 生成`.jar`文件. 生成的`.jar`文件可用于开启定时任务. 运行的主类为`Main`.
## 更新日志
#### 2020.10.15
+ 离线爬虫项目大体完工
+ 成功部署到服务器中
#### 2020.11.22
+ 实时爬虫项目大体完工
+ 成功部署到服务器中
#### 2020.11.28
+ 增添log4j日志记录组件
+ 增添历史数据查询接口`SQLQuery.java`
## 计划更新
- [ ] 股票价格下跌预警功能
- [ ] 部署为web应用
- [ ] ECharts可视化
- [ ] 股票价格离线预测功能
没有合适的资源?快使用搜索试试~ 我知道了~
(PythonJava)爬虫+Redis+MySQL实现股票的历史数据查询,降价通知,下跌预警,可视化等功能.zip
共20个文件
java:7个
py:7个
xml:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 46 浏览量
2023-10-21
23:13:58
上传
评论
收藏 93KB ZIP 举报
温馨提示
随着科技的不断进步,我们的生活变得越来越离不开各种各样的程序。程序已成为我们日常生活和工作中不可或缺的一部分,它们可以帮助我们更高效地完成任务,节省时间和精力。今天,我要向大家介绍一款功能强大、用途广泛的程序,它具有万金油般的能力,可以为我们的生活带来极大的便利。 首先,这款程序具有非常强大的功能。它不仅可以帮助我们完成日常的文字处理、数据分析和报表制作等任务,还支持各种格式的文件读取和编辑。同时,它还具有多种工具和插件,可以扩展其功能,满足我们不同的需求。无论是工作还是生活,这款程序都能帮助我们轻松应对各种挑战。 其次,这款程序的界面设计非常友好。它的界面简洁明了,操作简单易懂,即使是不熟悉电脑操作的人也可以轻松上手。同时,它还支持自定义快捷键和界面主题,可以让我们根据自己的习惯和喜好进行个性化设置。 此外,这款程序还具有出色的稳定性和安全性。它采用了先进的技术和算法,可以保护我们的文件和数据安全。同时,它还支持自动备份和恢复功能,即使出现意外情况,也可以帮助我们快速恢复到之前的状态。 总之,这款程序就像生活中的万金油一样,具有广泛的应用场景和多种功能。它可以为我们的生活和工作带来便利和效率,帮助我们更好地应对各种挑战。如果您还在为处理各种任务而烦恼,不妨尝试一下这款程序,或许它会成为您的得力助手。
资源推荐
资源详情
资源评论
收起资源包目录
(PythonJava)爬虫+Redis+MySQL实现股票的历史数据查询,降价通知,下跌预警,可视化等功能.zip (20个子文件)
StockCrawler-master
PythonCrawler
timeDecorator.py 212B
insertRecords.py 2KB
insertRecordsMultiProcesses.py 911B
insertRecordsMultiThread.py 906B
StockCodes.txt 84KB
findAllStocksCode.py 1KB
databaseInitialization.py 4KB
insertRecordsMultiThreadConnectionPool.py 1KB
JavaCrawler
pom.xml 3KB
src
main
resources
log4j2.xml 620B
java
JedisUtil.java 1KB
MySQLConnection.java 3KB
MailSender.java 2KB
InfoConsumer.java 3KB
InfoProducer.java 5KB
SQLQuery.java 5KB
Main.java 5KB
StockCodes.txt 84KB
ss.md 37B
README.md 4KB
共 20 条
- 1
资源评论
天天501
- 粉丝: 596
- 资源: 4666
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功