采集选股宝涨停信息
1
介绍一下如何用python采集选股宝的涨停信息——主要是涨停原因数据,以便在本地进行后续统计分析。
用到的开发工具 python3.6、pycharm、chrome
2
先用chrome找到选股宝涨停数据的网址,可以看到是个API——
https://flash-api.xuangubao.cn/api/pool/detail?pool_name=limit_up
直接访问API网址就能看到数据。
用request去获取,再进行解析就可以了。
3
为了方便复用,我们把访问网址获取数据功能放在一个类里,文件名collector.py,类名为Collector
import urllib.request import http.cookiejar import time class Collector(object): def __init__(self): self.cookies = http.cookiejar.CookieJar() self.handler=urllib.request.HTTPCookieProcessor(self.cookies) self.opener = urllib.request.build_opener(self.handler) def requestURL(self,url): retryCount = 200 while retryCount>0: retryCount = retryCount-1 try: response = self.opener.open(url) return response.read() except Exception as e: print(url,e,datetime.datetime.now()) time.sleep(0.7) continue
4
新建一个python文件,名为xuangubao.py,开始写选股宝数据获取类。
import datetime
import json
import pandas as pd
from collector import Collector
# 选股宝数据
class Xuangubao(Collector):
def __init__(self):
Collector.__init__(self)
pass
def get_limitup_info(self):
trade_date = self.get_recent_tradingday()
url = 'https://flash-api.xuangubao.cn/api/pool/detail?pool_name=limit_up'
content = self.requestURL(url)
content = json.loads(content)
if content["code"] != 20000:
print(content)
return None
#content 就是数据了,是个list
content = content["data"]
#把数据放到dataframe中
df_result = pd.DataFrame(content)
#注意文件中的时间类型都是时间戳,可以格式化为字符串
df_result['first_break_limit_down'] = df_result['first_break_limit_down'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
df_result['first_break_limit_up'] = df_result['first_break_limit_up'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
df_result['first_limit_down'] = df_result['first_limit_down'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
df_result['first_limit_up'] = df_result['first_limit_up'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
df_result['last_break_limit_down'] = df_result['last_break_limit_down'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
df_result['last_break_limit_up'] = df_result['last_break_limit_up'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
df_result['last_limit_down'] = df_result['last_limit_down'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
df_result['last_limit_up'] = df_result['last_limit_up'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
df_result['listed_date'] = df_result['listed_date'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
df_result['new_stock_break_limit_up'] = df_result['new_stock_break_limit_up'].apply(lambda x:datetime.datetime.utcfromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S"))
# 保存文件或者存数据库,之后就可以在本地进行统计分析了 df_result.to_csv("limit_up.csv",encoding="gbk",index=False)
if __name__=="__main__": cc=Xuangubao() cc.get_limitup_info()
5
选股宝对外提供了比较便捷的API,返回标准的JSON格式数据,只要进行简单的访问就可以获取内容,然后进行格式化存储到本地。
本文仅为学习之用,如有侵权,请联系删除。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android BottomSheetDialog使用实现底部拖动弹窗
- Android 滑动渐变背景Toolbar、点击置顶ScrollView
- Android 自定义View 画圆(奥运五环)
- Android 触摸屏交互之手势监听
- Android Glide加载网络图片不显示,但用网页打开又正常显示
- Android获取APP的版本号和版本名
- Android 在一个APP里打开另一个APP
- Android 自定义加载动画Dialog弹窗
- Android 天气APP(十一)未来七天的天气预报、逐小时预报、UI优化
- Android 天气APP(十)继续优化、下拉刷新页面天气数据
- Activity 活动跳转(Java&Kotlin)
- Android 天气APP(九)细节优化、必应每日一图
- Android CheckBox修改选中颜色并去除选中时的水波纹效果
- 绘制带回归线的散点图
- Java&Android像素px、dip转换工具类