请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  数理科学 帖子:3364705 新帖:26

Python采集选股宝涨停信息

Tango发表于:5 月 10 日 04:03回复(1)

本片文章——by 包希仁

1

介绍一下如何用python采集选股宝的涨停信息——主要是涨停原因数据,以便在本地进行后续统计分析。

用到的开发工具 python3.6、pycharm、chrome

2
先用chrome找到选股宝涨停数据的网址,可以看到是个API——


直接访问API网址就能看到数据。

用request去获取,再进行解析就可以了。

3
为了方便复用,我们把访问网址获取数据功能放在一个类里,文件名collector.py,类名为Collector

import urllib.requestimport http.cookiejarimport timeclass 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 = 200while retryCount>0:
        retryCount = retryCount-1try:
            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 就是数据了,是个listcontent = 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)```code
if __name__=="__main__":
cc=Xuangubao()
cc.get_limitup_info()

5
获取到的dataframe,因为字段比较多,这里只显示一列——
Img
保存成csv文件——
Img
采集到数据之后,可以用python再对原因等字段进行格式化、拆分。那就属于数据清洗阶段了,本篇不再赘述。

选股宝对外提供了比较便捷的API,返回标准的JSON格式数据,只要进行简单的访问就可以获取内容,然后进行格式化存储到本地。


本文仅为学习之用,如有侵权,请联系删除。

全部回复

0/140

量化课程

    移动端课程