目前两个常用的股票信息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')