繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168财经网>人物频道>帖子

Python采集选股宝涨停信息

作者/adadsfd 2019-05-10 04:03 0 来源: FX168财经网人物频道

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


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

分享到:
举报财经168客户端下载

全部回复

0/140

投稿 您想发表你的观点和看法?

更多人气分析师

  • 张亦巧

    人气2144文章4145粉丝45

    暂无个人简介信息

  • 梁孟梵

    人气2152文章3177粉丝39

    qq:2294906466 了解群指导添加微信mfmacd

  • 指导老师

    人气1856文章4423粉丝52

    暂无个人简介信息

  • 李冉晴

    人气2296文章3821粉丝34

    李冉晴,专业现贷实盘分析师。

  • 刘钥钥1

    人气2016文章3119粉丝34

    专业从事现货黄金、现货白银模似实盘操作分析指导

  • 张迎妤

    人气1896文章3305粉丝34

    个人专注于行情技术分析,消息面解读剖析,给予您第一时间方向...

  • 金泰铬J

    人气2320文章3925粉丝51

    投资问答解咨询金泰铬V/信tgtg67即可获取每日的实时资讯、行情...

  • 金算盘

    人气2696文章7761粉丝125

    高级分析师,混过名校,厮杀于股市和期货、证券市场多年,专注...

  • 金帝财神

    人气4728文章8329粉丝118

    本文由资深分析师金帝财神微信:934295330,指导黄金,白银,...