# stock **Repository Path**: managersoft/stock ## Basic Information - **Project Name**: stock - **Description**: 本应用是一个基于Spring boot 实现的股票指数爬虫工具,数据来源于: 同花顺、新浪财经、雪球、上交所、深交所、东方财富。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 30 - **Created**: 2022-07-03 - **Last Updated**: 2022-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 前言 > 本应用基于`istock`是一个基于Spring boot 实现的股票指数爬虫工具,数据来源于: - `同花顺` - `新浪财经` - `雪球` - `上交所` - `深交所` - `东方财富` :heavy_exclamation_mark: :point_right: 本项目初衷纯属技术交流,勿作商业用途:heavy_exclamation_mark::bangbang: ## 实现功能 :ballot_box_with_check: 指数更新 :ballot_box_with_check: 股票数据范围:目前只支持深市和沪市(A股) :ballot_box_with_check: 市盈率,市净率,ROE ,所属行业 :ballot_box_with_check: 历史数据:市盈率,市净率 ,分红,净资产收益率 :ballot_box_with_check: 公司基本信息、前10大股东信息 ## Demo 效果 :link: [点我查看效果](http://211.159.182.106/) (demo版) :link: ## :boom: 效果图 :boom: ![](readme-res/stock-list.png ) ![](readme-res/company-info.png ) ![](readme-res/top-holders.png ) ![](readme-res/his-dy.png ) ![](readme-res/his-pb-pe.png ) ![](readme-res/his-report.png ) ![](readme-res/his-roe.png ) ## 代码分支说明 - develop 正在开发版本(不稳定) - master 发布版(稳定) - 1.x 1.x版本代码(稳定) - 2.x 将要发布的2.0版本,正在开发中(不稳定) ## 重要配置说明 ```properties #web # 项目在哪个端口启动 server.port = 80 # 你的mongodb 数据库名称 spring.data.mongodb.database=stock # 你的mongodb 数据库地址 spring.data.mongodb.host= # 你的mongodb 服务监听端口 spring.data.mongodb.port=27017 # 爬虫超时抓取时间 spider.timeout=8000 # 爬虫模拟用的useagent头部信息 spider.useagent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3346.9 Safari/537.36 # 雪球网token 非常重要 要有token才能爬取雪球网信息 【往下翻介绍获取方法】 xueqiu.token= # 东方财富网token 【往下翻介绍获取方法】 eastmoney.token= #tushare token 非常重要【往下翻介绍获取方法】 tushare.token= # spring boot 健康检查管理端口 management.server.port=80 # spring boot 健康检查管理前缀 management.endpoints.web.base-path=/admin # spring boot 健康检查 帐号【自定义】 spring.security.user.name=root # spring boot 健康检查管理密码【自定义】 spring.security.user.password= ``` ## 雪球网token 获取方法 登录雪球网:https://xueqiu.com/ 按下浏览器F12 在cookie 里找到key : xq_a_token 把这个token复制到application.properties里 ![](https://user-images.githubusercontent.com/4113891/41651979-83cf2718-74b4-11e8-88d0-ce7979955304.png ) ![](https://user-images.githubusercontent.com/4113891/41651992-8b2020c6-74b4-11e8-86f0-c87c167f7ef0.png ) ## tushare token 获取方法 - [点击这个链接注册帐号](https://tushare.pro/register?reg=396107) - 然后https://tushare.pro/user/token 在这个页面可以拿到token - 在token页面找到`个人资料`修改个人资料进行加分。 - 把token复制到application.properties ![微信截图_20190409152849](https://user-images.githubusercontent.com/4113891/55781105-f8cc7f80-5adb-11e9-83d0-b191fddea24a.png) ![微信截图_20190409152802](https://user-images.githubusercontent.com/4113891/55781065-e4888280-5adb-11e9-8fc9-77a246bff9d0.png) ## 东方财富token获取 - 在chrome浏览器上打开:http://data.eastmoney.com/yjfp/detail/600519.html - 查看源代码 - 在源代码页面 ctrl+f 搜索 token关键字(有两个结果)拿第2个 ```javascript //获得数据接口(修改参数) function GetUrl() { //非传统url var filter = '&filter='; var code = document.getElementById("codeID").value; //var url = '/DataCenter_V3/yjfp/getlist.ashx?js=var {jsname}&pagesize={pageSize}&code='+code+'&page={page}&sr={sortRule}&sortType={sortType}' + filter;//默认地址 var url ='http://dcfm.eastmoney.com/EM_MutiSvcExpandInterface/api/js/get?type=DCSOBS&token=70f12f2f4f091e459a279469fe49eca5&p={page}&ps={pageSize}&sr={sortRule}&st={sortType}&filter=&cmd=' + code + '&js=var {jsname}={pages:(tp),data:(x)}'; return url; } ``` ## 重要说明 > 此项目为个人兴趣之余开发,很多地方不完善,很抱歉时间有限。没办法跟产品相比。但是本人不接受吐槽, 前面一段时间遇到很多网友直接对我进行人身攻击,指责。另外如果遇到问题,请客气跟我沟通,语气难听的 一概无视。谢谢! 个人无偿开源小项目,不容易。望大家多多包含。如无法理解,请绕道。谢谢! **请勿用于商业用途!!!** --- # 运行步骤说明 ## step 1 下载代码导入idea ## step 2 设置配置文件重要参数 ```properties spring.data.mongodb.host=你的mongodb服务器地址 xueqiu.token=上文介绍的雪球token eastmoney.token=上文介绍的东方财富token tushare.token=上文有介绍 spring.security.user.password=程序管理密码 自定义 ``` ## step3 创建mongodb 数据库 `stock` ![](readme-res/create-mongo-istock.png ) ## step 4 运行项目 ## step 5 初始化代码 ![](readme-res/init-code.png ) 操作成功后为初始化A股所有公司代码【效果始下】 ![](readme-res/code-list.png ) ## step 6 更改windows 时间初始化股票主ipo主数据 > 因为项目是爬虫项目,是严格按照时间逻辑去执行的,并且频率并发有严格的控制(请求过高,网站有反爬虫 策略,会封锁ip),另外`stock` 项目更新股票价格是在证券交易时间内进行的,也就是说是周一~周五 上午9:30 - 11:30 下 午 13:00 ~ 15:00 这段时间内才会更新股票价格等指标。所以如果当前时间不是在交易时间内请修改windows时间让程序立马初始化。 ### 初始化`stock` 这张表只需要 3分钟左右 3分钟后就可以改回时间了 ## step 7 挂机 > 让`stock` 程序挂机运行,所有数据完成初始化一般4个小时左右,第一次数据初始化比较麻烦,往后就好了。 往后都是自动化,让程序挂在那就好。会每天自动更新数据。 # 常见问题 ## mongodb 要脚本建表吗? 不用,运行程序自动生成 ## 为什么要用雪球token 因为有在雪球网爬取数据,雪球网有反爬虫机制,要登录后才能取数据,token就是绕过验证环节 ## 为什么有时候会报403错误 如果遇到控制台输出dy 403就是雪球token过期了,你重新登录雪球网,换新的token就好。一般一个星期换一次吧。 ## 致谢 - 感谢原创[`istock`](https://github.com/kingschan1204/istock)