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