基于python 的股票行情查询系统开发(一)

本文记录了一位程序员使用Python开发股市行情查询系统的初期过程,包括选择Python作为开发语言、寻找免费数据API(如网易财经)以及获取股票代码的实现。作者通过网页爬虫获取股票列表并存储到CSV文件,为后续的历史行情获取和数据存储奠定了基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

1、开发背景

作为一个出入股市的小白程序员,在没有金融知识的加成下,自然是成绩惨淡,因此我痛定思痛,决定通过程序的力量,进行一个质的交易水平提高的方法,那就是自己写一个股票量化行情系统,再搭配好强大的交易策略,摒弃人性的贪婪和恐惧。好了,废话不多说了,开搞!

二、开发计划

1、开发语言

typescript
查阅了股票中的大的名称术语等等 ,看看用什么开发比较好。首先是考虑了数据中的比较好的vscode 的插件开发,然而我并不会typescript(js)开发,暂时先不考虑哈哈哈哈哈哈。而且股票数据的获取也是异常的僵硬,想着搞点免费的数据接口用用,然而大部分的数据接口都已经封装好了,个人想法想从零开始搭建一个自己的股票数据查询软件,可以自己定制各种公式数据进行计算,图表啊等等(我只是想想。。。)。
python
所以,想来想去正好把之前学的python重新再捡起来,而且python中的各种模块啊开发起来比较高效和方便,正好也提升一下自己的编码能力。顺便练练自己的炒股水平哈哈哈。

2、数据api获取

查看东方财富的网站,看看爬虫能不能直接网页上把数据爬了。结果爬出来发现数据竟然变成“–”,一脸懵逼,网上查了查发现原来是用了ajax动态获取数据的方法,数据再加载到浏览器页面上的,这个还得分析他的请求参数,之后可能回去研究研究,遂放弃。第二种方法,selenium直接模拟浏览器进行抓取,但是太卡了影响抓取数据,果断看看还有什么办法。就在我不知道如何是好时,突然!有网友说有网易有免费的!api接口!卧槽,那还等什么直接搞起。
这里我也会放出相关的免费数据api接口:
lg507股票数据
新浪实时数据接口 (list后面的参数进行修改)
网易财经历史数据接口
需要注意的是,网易的接口直姐点击为csv文件,直接可以用爬虫进行抓取,之后存入mysql啊什么数据库也方便的多。

 http://quotes.money.163.com/service/chddata.html?code=0600772&end=20210307fields=TCLOSE;HIGH;LOW;TOPEN;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP

code中股票代码第一位0代表沪市、1代表深市,后面为股票代码(港股为5位)。
enddate中输入日期为从发行该只股票到此日期期间的所有交易数据

3、后续计划

后续会添加一些其他的交易行情,比如期货啊、黄金、比特币、美股等等啥的(疯狂画饼中。。。)

今日进度

1、前期准备

在开始之前,必须知道,ide得用什么。这次,我选择了vscode进行整个系统的开发,因为确实轻量级的ide以及简洁的界面对于开发者来说是具有非常大的正面效果。vscode就有这样的特点,so ,let’s go 。

2、获取股票代码

首先,使用re模块进行网站的请求。

import re
'''
取得网页的内容
'''
def getHTMLText(url,timeout=30):
    try:
        r = requests.get(url,timeout = 30)
        r.raise_for_status()
        r.encoding = "UTF-8"
        return r.text
    except:
        return '产生异常'

接着,我们通过获取到HTML内容使用BeautifulSoup对数据进行处理,将获得的数据写入csv文件中。

from bs4 import BeautifulSoup as bs
def get_stock_list(html): #沪市
    final_list = []
    final_list.append(['股票名称','股票代码'])
    soup = bs(html,'html.parser')
    body = soup.body
    data = body.find('ul',{'class':'ngblistul2'}) 
    data_hide = body.find('ul',{'class':'ngblistul2 hide'})     # ngblistul2 hide
    lis  = data.find_all('li') + data_hide.find_all('li')
    for li in lis:
        data1 = li.find_all('a')
        data2 = data1[0].string
        match1 = re.findall("[0-9]{6}",data2)  #匹配前6位代码   
        match2 = re.sub(u"\\(.*?\\)", "", data2)
        final_list.append([match2,match1[0]])  
    return final_list
def write_to_csv(lists):  #写入csv
    try:
        with open('D:\\股票数据\\stocklist.csv','w',newline='') as csvfile:
            writer = csv.writer(csvfile)
            for row in lists:
                writer.writerow(row)
    except:
        return '产生异常'   
def read_from_csv(file):   #读取csv
    stock_list = []
    try:
        with open(file,'r') as csvfile:
            reader = csv.reader(csvfile)
            for line in reader:
                stock_list.append(line)
        return stock_list    
    except:
        return '产生异常'           

来,让我们执行一下:

def main():
    url = 'http://guba.eastmoney.com/remenba.aspx'
    html = sus.getHTMLText(url)
    stock_list = get_stock_list(html)
    write_to_csv(stock_list)
    stock_list = sus.read_from_csv("D:\\股票数据\\stocklist.csv")
    print(stock_list)
    

main()

效果如图:
在这里插入图片描述
再来看看csv文件:
在这里插入图片描述
OK,就此获取股票名称和股票代码的工作搞定。
下篇开始进行历史行情的获取以及数据的存取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SharlockYu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值