采集选股宝涨停信息

时间:2019-02-26
本文章向大家介绍采集选股宝涨停信息,主要包括采集选股宝涨停信息使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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格式数据,只要进行简单的访问就可以获取内容,然后进行格式化存储到本地。

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