Python实现股票信息查询

目前两个常用的股票信息CPI:
腾讯行情CTPAPI接口源码
新浪行情CTPAPI
使用requests模块爬取股票信息,这里以查询股票市值为例。

一、根据股票名称查询股票代码

在python文件夹下设置两个表格GPLIST.xlsx,其中是A股全部代码和股票名称,query_stock_names.xlsx`是要查询的股票名称

stockfinder-3.py

import openpyxl  
  
def create_stock_dict(file_path):  
    stock_dict = {}  
    wb = openpyxl.load_workbook(filename=file_path)  
    ws = wb.active  
    for row in ws.iter_rows(values_only=True):  
        stock_dict[row[1]] = row[0]  
    return stock_dict  
  
def get_stock_code(stock_name, stock_dict):  
    return stock_dict.get(stock_name, "Not Found")  
  
def main():  
    stock_dict = create_stock_dict('GPLIST.xlsx')  
  
    wb = openpyxl.load_workbook(filename='query_stock_names-1.xlsx')  
    ws = wb.active  
    for row in ws.iter_rows(min_row=1, min_col=1, max_col=1, values_only=True):  
        stock_name = row[0]  
        stock_code = get_stock_code(stock_name, stock_dict)  
        ws.cell(row=ws.max_row+1, column=2, value=stock_code)  
  
    wb.save('query_stock_names-1.xlsx')  
  
if __name__ == "__main__":  
    main()

二、股票市值查询

1.单个股票市值查询
lianghua-2.py

import requests  
from dateutil import parser  
from datetime import datetime,time  
from time import sleep  
  
  
def get_tick(stock_code):  
    if stock_code[0] in ['5','6']:  
        prefix = 'sh'  
    elif stock_code[0] in ['0','3']:  
        prefix = 'sz'  
    else:  
        raise Exception('prefix')  
    page = requests.get('http://qt.gtimg.cn/q='+prefix+stock_code)  
    stock_info = page.text  
    stock_info = stock_info.split('~')  
    open_ = float(stock_info[5])# string  
    high = float(stock_info[33])  
    low = float(stock_info[34])  
    close = float(stock_info[3])  
    shizhi = float(stock_info[45])  
    trade_datetime = parser.parse(stock_info[30]) #将string格式解析成日期格式  
    return shizhi  
  
  
if __name__ == "__main__":  
    stock_c = '601088'  
    print(get_tick(stock_c))

2.批量股票市值查询
stockshizhiquery-2.py

import requests  
import openpyxl  
  
def get_tick(stock_code):  
    if stock_code[0] in ['5', '6']:  
        prefix = 'sh'  
    elif stock_code[0] in ['0', '3']:  
        prefix = 'sz'  
    else:  
        raise Exception('Invalid stock code prefix')  
    page = requests.get('http://qt.gtimg.cn/q=' + prefix + stock_code)  
    stock_info = page.text  
    stock_info = stock_info.split('~')  
    shizhi = float(stock_info[45]) if stock_info[45] else 0.0  # 如果市值为空,则设为0  
    return shizhi  
  
  
    # 打开 Excel 文件  
workbook = openpyxl.load_workbook('query_stock_names-1.xlsx')  
  
    # 获取第一个工作表  
sheet = workbook.active  
  
    # 获取每支股票的市值,并将其追加到第三列  
for row in sheet.iter_rows(min_row=1, values_only=True):  # 假设股票代码在第一列,从第二行开始读取数据  
  
        stock_code = str(row[0])  
        shizhi = get_tick(stock_code)  
        # sheet.append([shizhi])  
        sheet.cell(row=sheet.max_row + 1, column=3, value=shizhi)  
  
  
workbook.save('query_stock_names-1_updated.xlsx')
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python的requests库可以方便地实现股票信息的抓取。首先,我们需要导入requests库。 ```python import requests ``` 接下来,我们需要确定目标网站,以获取股票信息。这里以新浪财经的股票数据为例,使用新浪财经的股票接口获取数据。 ```python url = "http://hq.sinajs.cn/list=sz000001" ``` 然后,我们使用requests库发送网络请求获取股票数据。 ```python response = requests.get(url) ``` 通过判断返回的状态码,可以确保请求成功。 ```python if response.status_code == 200: # 请求成功 data = response.text # 处理数据 # ... else: print("请求失败") ``` 接下来,我们可以对获取到的数据进行处理。新浪财经的股票数据是以字符串的形式返回的,我们可以根据数据的格式进行处理。 ```python # 假设获取到的数据格式如下:var hq_str_sz000001="白云机场,18.000,17.960,18.180,18.400,17.910,18.180,18.190,77243693,1392362668.500,2038657,18.180,438315,18.170,522969,18.160,787210,18.150,1027504,18.140,2021-09-30,15:44:05,11,0,0.000,0.010,0.000,0.000,0.000,0.870,5.320,0.000,6.160,5.680,4.280,2021-09-30 15:44:05,3,1151"; # 数据以逗号分隔,第2个元素是股票名称,第3个元素是开盘价,第4个元素是收盘价,以此类推 # 使用split方法按逗号分隔数据 stock_data = data.split(",") # 获取股票名称 stock_name = stock_data[0].split("=")[1] # 获取开盘价 opening_price = float(stock_data[2]) # 获取收盘价 closing_price = float(stock_data[3]) # ... ``` 最后,我们可以根据需要做进一步的处理,比如保存数据、展示数据等。 总结起来,通过使用Python的requests库,我们可以方便地实现股票信息的抓取,并对数据进行进一步处理。当然,具体的实现还会根据目标网站的接口和数据格式进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值