当前位置: 首页 > news >正文

go语言访问新浪股票

package mainimport ("encoding/json""fmt""io""log""net/http""os""time"
)// StockData 定义股票数据结构
type StockData struct {Symbol        string `json:"symbol"`        // 股票符号Code          string `json:"code"`          // 股票代码Name          string `json:"name"`          // 股票名称Trade         any    `json:"trade"`         // 当前价格PriceChange   any    `json:"pricechange"`   // 价格变动ChangePercent any    `json:"changepercent"` // 涨跌幅Buy           any    `json:"buy"`           // 买入价Sell          any    `json:"sell"`          // 卖出价Settlement    any    `json:"settlement"`    // 结算价Open          any    `json:"open"`          // 开盘价High          any    `json:"high"`          // 最高价Low           any    `json:"low"`           // 最低价Volume        any    `json:"volume"`        // 成交量Amount        any    `json:"amount"`        // 成交额TickTime      string `json:"ticktime"`      //PER           any    `json:"per"`           // 市盈率PB            any    `json:"pb"`            // 市净率Mktcap        any    `json:"mktcap"`        // 总市值Nmcap         any    `json:"nmcap"`         // 流通市值TurnoverRatio any    `json:"turnoverratio"` // 换手率
}// APIResponse API响应结构
type APIResponse struct {Data []StockData `json:"data"`
}func main() {fmt.Println("开始获取新浪财经股票数据...")// 存储所有股票数据var allStocks []StockDatapage := 1for {fmt.Printf("正在获取第 %d 页数据...\n", page)// 构建API URLurl := fmt.Sprintf("https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=%d&num=100&sort=symbol&asc=0&node=hs_a", page)// 发送HTTP请求resp, err := http.Get(url)if err != nil {log.Printf("第 %d 页请求失败: %v", page, err)break}// 读取响应体body, err := io.ReadAll(resp.Body)resp.Body.Close()if err != nil {log.Printf("读取第 %d 页响应失败: %v", page, err)break}// 检查是否返回空数组if string(body) == "[]" {fmt.Printf("第 %d 页返回空数组,数据获取完成\n", page)break}// 解析JSON数据var stocks []StockDataerr = json.Unmarshal(body, &stocks)if err != nil {log.Printf("解析第 %d 页JSON失败: %v", page, err)log.Printf("响应内容: %s", string(body))break}// 检查是否获取到数据if len(stocks) == 0 {fmt.Printf("第 %d 页没有数据,数据获取完成\n", page)break}// 添加到总数据中allStocks = append(allStocks, stocks...)fmt.Printf("第 %d 页获取到 %d 条数据,累计 %d 条数据\n", page, len(stocks), len(allStocks))// 翻页page++// 添加延迟,避免请求过于频繁time.Sleep(500 * time.Millisecond)}// 输出统计信息fmt.Printf("\n数据获取完成!总共获取到 %d 条股票数据\n", len(allStocks))// 显示前10条数据作为示例if len(allStocks) > 0 {fmt.Println("\n前10条股票数据示例:")fmt.Println("========================================================================================================")fmt.Printf("%-10s %-20s %-8s %-8s %-8s %-12s %-12s\n","代码", "名称", "当前价", "涨跌", "涨跌幅", "成交量", "成交额")fmt.Println("========================================================================================================")for i := 0; i < 10 && i < len(allStocks); i++ {stock := allStocks[i]fmt.Printf("%-10s %-20s %-8s %-8s %-8s %-12s %-12s\n",stock.Symbol, stock.Name, stock.Trade, stock.PriceChange,stock.ChangePercent, stock.Volume, stock.Amount)}}// 保存数据到文件saveToFile(allStocks)
}// saveToFile 将数据保存到JSON文件
func saveToFile(stocks []StockData) {fileData, err := json.MarshalIndent(stocks, "", "  ")if err != nil {log.Printf("序列化数据失败: %v", err)return}err = os.WriteFile("stock_data.json", fileData, 0644)if err != nil {log.Printf("保存文件失败: %v", err)return}fmt.Printf("\n数据已保存到 stock_data.json 文件\n")
}
http://www.zskr.cn/news/40012.html

相关文章:

  • Hugging Face的基础使用
  • 2025上海SAT线上培训机构推荐:线上课程首选“无老师国际教育”
  • Java基础加强13-集合框架、Stream流 - 指南
  • 高级语言程序第三次作业 - 102300317
  • Scaling Law至现有AI即将跌落神坛?AI大模型的“增长神话”是否正在崩塌-上篇 - 实践
  • The 2024 ICPC Asia Nanjing Regional Contest (The 3rd Universal Cup. Stage 16: Nanjing) 题解
  • 完整教程:四大名著智能可视化推演平台
  • 2025年靠谱的气体探测器专业厂家推荐,气体探测器企业全解析
  • 2025年重庆正宗陈麻花品牌口碑排名:陈建平麻花客户评价如何、性价比怎么样、价格合理吗全解析
  • Introduction to Microsoft Visual C++/MFC
  • 收藏!计算机领域除顶会外,这6大核心期刊你绝不能错过
  • 2025年沈阳编程机构权威推荐榜单:spike编程/scratch编程/python编程源头机构精选
  • Gitlab通过Token生成的用户怎么删除
  • Prometheus监控系统安装
  • 2025年诚信的PU线条厂家TOP5推荐,PU线条厂家全解析
  • 2025年代办注册公司哪家口碑好?代办注册公司找哪家?
  • 2025 年散热器厂家最新推荐榜:涵盖电子 / 插片 / 型材 / 铲齿 / 新能源等多品类,权威测评精选实力企业
  • 2025 年过滤器厂家最新推荐榜单:品牌综合实力测评发布,五大优质企业脱颖而出润滑油过滤器/自清洗过滤器/全自动除污过滤器/双联过滤器/烛式过滤器厂家推荐
  • docker学习笔记详记 - 教程
  • 浏览器共享存储导致身份标识冲突
  • 2025数证杯初赛
  • Mybatisplus 如何将已经有值的字段设置为空值null
  • 2025 年上海商用净水器租赁公司最新推荐榜,技术实力与市场口碑深度解析,助力精准选品工厂,事业单位,办公净水器租赁企业
  • 2025年尼龙拉链供货厂家权威推荐榜单:树脂拉链/金属拉链/隐形拉链源头厂家精选
  • 详细介绍:MySQL主从复制:数据同步实战指南
  • wzy
  • 分享一个自动化进行Oracle 重做日志组管理的脚本
  • 强化学习值函数与策略搜索两种方法对比和疑问解读
  • 2025qwb 线上赛wp
  • 深入解析:探索大语言模型(LLM):一文读懂通用大模型的定义、特点与分类