当前位置: 首页 > 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.jsqmd.com/news/31432/

相关文章:

  • Hugging Face的基础使用
  • Python私教FastAPI+React构建Web应用03 FARM技术栈介绍 - 教程
  • 2025上海SAT线上培训机构推荐:线上课程首选“无老师国际教育”
  • Ecelipse 安装 MAT
  • 【时序数据库 IoTDB 线上小课 20】4 分钟了解 IoTDB MCP:让 AI 对话时序数据
  • latex使用过程中,需要按照期刊要求进行调整的办法(随时更新)
  • 高级语言程序第三次作业 - 102300317
  • 2025-11-04 早报新闻
  • Scaling Law至现有AI即将跌落神坛?AI大模型的“增长神话”是否正在崩塌-上篇 - 实践
  • 基于华为ENSP学习网络
  • The 2024 ICPC Asia Nanjing Regional Contest (The 3rd Universal Cup. Stage 16: Nanjing) 题解
  • .NET 8项目下载所有依赖到指定目录
  • su命令引起的nohup进程以root身份启动导致的问题
  • 2025年学生会团体服定制厂家推荐:靠谱团体服定制企业全解析
  • 博客文章map
  • 注册绑卡augment,免费试用一年教程--稳
  • 2025年不锈钢定制加盟公司推荐:不锈钢门定制工厂口碑榜介绍
  • 完整教程:四大名著智能可视化推演平台
  • 2025年重庆正宗陈麻花品牌口碑排名:陈建平麻花客户评价如何、性价比怎么样、价格合理吗全解析
  • 2025 年留学机构最新推荐排行榜:英美澳加等国申请权威指南,老牌与新锐机构优选名单加拿大留学 / 留学中介 / 留学咨询推荐
  • Introduction to Microsoft Visual C++/MFC
  • C++字符串选择char数组还是std::string比较
  • fastadmin配合宝塔面板造成cors error 跨域问题
  • 2025年系统门窗定制厂家权威推荐榜单:品牌/系统门窗源头厂家、专业定制厂家精选
  • 12 Kodi
  • 收藏!计算机领域除顶会外,这6大核心期刊你绝不能错过
  • 视频汇聚平台EasyCVR赋能电力行业智能化转型的“可视化”基石
  • 2025年平顶山专业戒网瘾机构权威推荐榜单:孩子戒网瘾/戒网瘾/正规戒网瘾源头机构精选
  • 视频融合平台EasyCVR:打造智慧酒店一体化安防体系,筑牢安全管理防线
  • 2025年沈阳编程机构权威推荐榜单:spike编程/scratch编程/python编程源头机构精选