GithubHelp home page GithubHelp logo

kingschan1204 / istock Goto Github PK

View Code? Open in Web Editor NEW
803.0 49.0 359.0 2.41 MB

:point_right:一个基于spring boot 实现的java股票爬虫(仅支持A股),如果你:heart:请:star: . V2升级版正在开发中!

Java 67.25% HTML 17.39% JavaScript 10.07% CSS 4.92% FreeMarker 0.37%
spring-boot java stock spider vue2 echarts jqgrid bootstrap mongodb

istock's Introduction

此项目停止开发,对股票数据爬取感兴趣的同学可以关注项目:https://github.com/kingschan1204/easycrawl

easycrawl 介绍:初衷想用java写一个简单高效爬取互联网数据的工具包,单元测试里有大量爬取股票数据的例子。


前言

本应用是一个基于Spring boot 实现的股票指数爬虫工具,数据来源于:

  • 同花顺
  • 新浪财经
  • 雪球
  • 上交所
  • 深交所
  • 东方财富

❗ 👉 本项目初衷纯属技术交流,勿作商业用途❗‼️

实现功能

☑️ 指数更新

☑️ 股票数据范围:目前只支持深市和沪市(A股)

☑️ 市盈率,市净率,ROE ,所属行业

☑️ 历史数据:市盈率,市净率 ,分红,净资产收益率

☑️ 公司基本信息、前10大股东信息

Demo 效果

🔗 点我查看效果 (demo版) 🔗

💥 效果图 💥

代码分支说明

  • develop 正在开发版本(不稳定)
  • master 发布版(稳定)
  • 1.x 1.x版本代码(稳定)
  • 2.x 将要发布的2.0版本,正在开发中(不稳定)

重要配置说明

#web 
# 项目在哪个端口启动
server.port = 80
# 你的mongodb 数据库名称
spring.data.mongodb.database=istock
# 你的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里

tushare token 获取方法

微信截图_20190409152802

东方财富token获取

登录网站:http://data.eastmoney.com/rzrq/total.html 即可获取token

重要说明

此项目为个人兴趣之余开发,很多地方不完善,很抱歉时间有限。没办法跟产品相比。但是本人不接受吐槽, 前面一段时间遇到很多网友直接对我进行人身攻击,指责。另外如果遇到问题,请客气跟我沟通,语气难听的 一概无视。谢谢! 个人无偿开源小项目,不容易。望大家多多包含。如无法理解,请绕道。谢谢!

请勿用于商业用途!!!


运行步骤说明

step 1 下载代码导入idea

step 2 设置配置文件重要参数

spring.data.mongodb.host=你的mongodb服务器地址
xueqiu.token=上文介绍的雪球token
eastmoney.token=上文介绍的东方财富token
tushare.token=上文有介绍
spring.security.user.password=程序管理密码 自定义

step3 创建mongodb 数据库 istock

step 4 运行项目

step 5 初始化代码

操作成功后为初始化A股所有公司代码【效果始下】

step 6 更改windows 时间初始化股票主ipo主数据

因为项目是爬虫项目,是严格按照时间逻辑去执行的,并且频率并发有严格的控制(请求过高,网站有反爬虫 策略,会封锁ip),另外istock 项目更新股票价格是在证券交易时间内进行的,也就是说是周一~周五 上午9:30 - 11:30 下 午 13:00 ~ 15:00 这段时间内才会更新股票价格等指标。所以如果当前时间不是在交易时间内请修改windows时间让程序立马初始化。

初始化stock 这张表只需要 3分钟左右 3分钟后就可以改回时间了

step 7 挂机

让istock 程序挂机运行,所有数据完成初始化一般4个小时左右,第一次数据初始化比较麻烦,往后就好了。 往后都是自动化,让程序挂在那就好。会每天自动更新数据。

常见问题

mongodb 要脚本建表吗?

不用,运行程序自动生成

为什么要用雪球token

因为有在雪球网爬取数据,雪球网有反爬虫机制,要登录后才能取数据,token就是绕过验证环节

为什么有时候会报403错误

如果遇到控制台输出dy 403就是雪球token过期了,你重新登录雪球网,换新的token就好。一般一个星期换一次吧。

此项目会一直更新下去吗?

会的,这个项目我会一直做下去的,只是我业余时间不多,我会尽量多用业余时间多写的。

赞赏

如果你觉得此项目还不错,可以随意打赏,收到款项将用于istock 服务器部署费用 。打赏超50元 可加微信回答一切关于istock的问题。

istock's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

istock's Issues

错误日志

请问mongo数据库里的数据格式是什么样子的呢? 系统是如何存储并提取数据的呢

如何导入本地使用

你好 ,我是学生,想要研究一下您的代码 ,请问该如何导入本地使用该程序? 需要哪些配置?

异常处理

楼主,启动报这个错
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'tushare.token' in value "${tushare.token}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172)
at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124)
at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:237)
at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:211)
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda$processProperties$0(PropertySourcesPlaceholderConfigurer.java:175)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:839)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1083)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:581)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:370)
... 45 common frames omitted

东方财富网token问题

东方财富网登陆后localstorage跟cookie都没找到token , 在哪获取? 然后邮箱服务器地址还在查找获取方法 , 不是优先问题,可以的也提示下

上次分红日期有误

在已公布财务报表的情况下,如果暂时还没有分红的话,那么取的日期是- 。正常情况应该取上一年分红日期。
bug

留言表示支持

项目做的很棒,可惜我只会python
点赞表示支持,加油

感谢与疑问

首先感谢下你的开源代码 写的不错学到挺多东西
爬虫的时候总线程数都是0是不是正常的

数据连接丢失

部署在服务器上第二天就用不了,拿不到数据连接。返回的数据为null

tushare 采用积分制度问题

tushare 访问api采用了积分制,刚注册的用户积分太低,导致没办法访问api,如果去掉这部分的逻辑对于整体的影响大吗?

基本信息空白

我这边的基本信息是空白的。。。就是/info/{code},这个页面一片空白,请问怎么回事呀?

拿定期公告的时候报空指针

Elements tr = table.getElementsByTag("tr");
java.lang.NullPointerException
at io.github.kingschan1204.istock.common.util.stock.impl.JisiluSpilder.crawHisPbPePriceAndReports(JisiluSpilder.java:50)
at io.github.kingschan1204.istock.module.maindata.services.StockService.crawAndSaveHisPbPe(StockService.java:185)
at io.github.kingschan1204.istock.module.maindata.ctrl.StockHisPageCtrl.getStockReport(StockHisPageCtrl.java:171)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:891)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.