营销型网站用什么系统,北京丰台区做网站公司,上海opencart网站建设,wordpress文章页打赏AI股票分析师daily_stock_analysis一键部署教程#xff1a;Python爬虫数据采集实战 你是不是也厌倦了每天手动盯盘#xff0c;在几十个股票软件和财经新闻网站之间来回切换#xff1f;想不想拥有一个24小时在线的AI分析师#xff0c;帮你自动抓取数据、分析行情#xff0…AI股票分析师daily_stock_analysis一键部署教程Python爬虫数据采集实战你是不是也厌倦了每天手动盯盘在几十个股票软件和财经新闻网站之间来回切换想不想拥有一个24小时在线的AI分析师帮你自动抓取数据、分析行情还能把分析报告直接推送到你的手机上今天我就带你手把手搭建一个属于自己的AI股票分析系统。这个系统叫daily_stock_analysis是一个在GitHub上非常火的开源项目。它最大的特点就是“全自动”和“零成本”——利用免费的云端资源和AI大模型帮你把繁琐的复盘工作自动化。听起来有点复杂别担心这篇教程就是写给新手看的。我会用最直白的话一步步教你如何在星图GPU平台上把它跑起来并且重点讲解如何用Python爬虫技术为这个系统注入“活水”——也就是自动采集股票数据。整个过程就像搭积木跟着我做你也能拥有一个专属的智能投研助理。1. 准备工作认识你的AI分析师在动手之前我们先花几分钟了解一下我们要部署的这个“家伙”到底能干什么。这样你才知道自己即将拥有一个什么样的工具。daily_stock_analysis的核心思路很简单让机器代替人去做那些重复、枯燥的信息收集和初步分析工作。想象一下一个专业的股票分析师每天要做什么他需要看行情查看自选股的股价、涨跌幅、成交量等。看技术指标分析K线、均线、MACD等各种图表。看新闻和舆情搜索公司相关的利好或利空消息。综合判断把所有信息揉在一起给出一个初步的买卖建议。这个AI系统干的就是前面三步的“苦力活”然后把整理好的数据和初步分析交给一个AI大模型比如Gemini或者DeepSeek让它生成一份像模像样的“决策仪表盘”。最后这份报告会通过微信、飞书或者邮件自动发给你。它不会替你下决定但它能把你从海量信息里解放出来让你只关注最有价值的结论。对于上班族或者没时间盯盘的朋友来说这简直是神器。2. 环境搭建在星图GPU平台安家我们选择在星图GPU平台上部署主要是图它方便。你不用自己折腾服务器环境也不用担心家里的电脑关机了程序就停了。星图提供了现成的、带GPU的容器环境跑AI应用正合适。2.1 创建你的工作空间首先你得有一个星图平台的账号。登录之后找到“创建实例”或者“新建工作空间”的按钮。在镜像选择这里是关键一步。我们不需要从零开始安装Python环境那样太慢了。你可以直接搜索“Python”或者“PyTorch”这类基础镜像。我推荐选择预装了Python 3.10或Python 3.11并且带有CUDA支持的镜像这样后续调用一些需要GPU加速的库会更顺畅。实例配置上对于这个分析系统CPU和内存不用特别高起步配置通常就够用。重点是把存储空间给足建议至少50GB因为我们要安装不少Python库后续运行也会产生一些缓存文件。点击创建稍等几分钟一个属于你的云端开发环境就准备好了。2.2 把代码“搬”到云端环境有了接下来要把daily_stock_analysis的代码放进去。这里我们用git命令这就像是一个代码搬运工。打开星图平台提供的终端通常是Web Terminal或者Jupyter Lab里的Terminal输入以下命令# 克隆项目代码到你的工作空间 git clone https://github.com/ZhuLinsen/daily_stock_analysis.git # 进入项目文件夹 cd daily_stock_analysis两条命令执行完项目的所有文件就都下载到你的云端环境里了。你可以用ls命令看看是不是多了一个daily_stock_analysis的文件夹。2.3 安装必需的“零件”代码有了但它还跑不起来因为它依赖很多其他的Python库比如网络请求的requests、数据分析的pandas等等。我们需要一次性把这些“零件”都装上。项目很贴心地准备了一个requirements.txt文件里面列出了所有需要的库。我们只需要一条命令pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple这里我加了一个-i参数指定使用清华大学的镜像源来下载。国内网络访问这个源会快很多能避免安装过程卡住。这个安装过程可能需要几分钟取决于网速。泡杯茶耐心等一下。如果中间有某个库安装报错别慌通常是网络波动重新运行一次上面的命令就行。3. 核心实战用Python爬虫抓取股票数据好了基础环境搭好了。现在来到最核心、也是最有意思的部分——数据采集。daily_stock_analysis项目本身支持多种数据源比如AkShare、Tushare。但我想教你更底层、更通用的方法自己写爬虫去抓。为什么因为自己写的爬虫最灵活。万一某个数据源接口变了或者你想抓一些特定网站的数据自己动手就能搞定。3.1 爬虫初体验抓取单只股票实时行情我们从一个最简单的例子开始从新浪财经抓取某只股票的实时价格。别被“爬虫”这个词吓到其实就是让程序去访问一个网页然后把我们需要的信息“抠”出来。我们先安装一个专门用来解析网页的库pip install beautifulsoup4 lxml然后创建一个新的Python文件比如叫stock_spider.py把下面的代码复制进去import requests from bs4 import BeautifulSoup import time def get_stock_price(stock_code): 从新浪财经获取A股股票实时价格 :param stock_code: 股票代码例如 sh600519 (上海) 或 sz000001 (深圳) :return: 股票名称和当前价格 # 构建新浪财经股票页面的URL url fhttps://hq.sinajs.cn/list{stock_code} # 设置请求头模拟浏览器访问 headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36, Referer: https://finance.sina.com.cn } try: # 发送网络请求 response requests.get(url, headersheaders) response.encoding gbk # 新浪财经使用gbk编码 if response.status_code 200: # 解析返回的数据格式类似var hq_str_sh600519茅台,1850.50,...; data_str response.text # 提取引号内的数据部分 data_content data_str.split()[1] data_list data_content.split(,) if len(data_list) 1: stock_name data_list[0] current_price data_list[3] # 当前价格通常在第四个位置 print(f股票 {stock_name}({stock_code}) 当前价格: {current_price} 元) return stock_name, current_price else: print(解析数据失败) return None, None else: print(f请求失败状态码: {response.status_code}) return None, None except Exception as e: print(f抓取过程中出现错误: {e}) return None, None # 试试抓取贵州茅台的股价 if __name__ __main__: # 贵州茅台在上海证券交易所的代码是 sh600519 name, price get_stock_price(sh600519) if price: print(f成功获取到 {name} 的价格{price})运行这个脚本你就能在终端看到贵州茅台600519的实时股价了。这段代码做了几件事requests.get去访问新浪财经的一个特定数据接口。BeautifulSoup虽然这里没直接用上但它是解析复杂HTML的利器我们后面会用到。从返回的一串文本里按照新浪的格式把股票名字和价格“切”出来。这就是爬虫最基本的工作原理访问 - 获取 - 解析。3.2 进阶任务批量抓取你的自选股列表只抓一只股票不过瘾我们通常关注一个股票池。这就需要用到循环和列表了。假设你有一个自选股列表存放在一个文本文件my_stocks.txt里每行一个代码sh600519 sz000858 sz300750我们可以写一个函数来批量抓取def batch_get_prices(stock_filemy_stocks.txt): 批量从文件读取股票代码并获取价格 stock_data [] try: with open(stock_file, r, encodingutf-8) as f: stock_codes [line.strip() for line in f if line.strip()] print(f开始批量获取 {len(stock_codes)} 只股票数据...) for code in stock_codes: name, price get_stock_price(code) if name and price: stock_data.append({ code: code, name: name, price: price }) # 礼貌一点每次请求间隔1秒避免把别人服务器搞崩 time.sleep(1) print(\n 自选股行情汇总 ) for item in stock_data: print(f{item[name]}({item[code]}): {item[price]}) return stock_data except FileNotFoundError: print(f文件 {stock_file} 不存在) return [] # 运行批量抓取 if __name__ __main__: my_portfolio batch_get_prices()这样你只需要维护好那个my_stocks.txt文件运行一次脚本整个股票池的行情就一目了然了。3.3 让数据“活”起来定时自动运行手动运行脚本还是麻烦。既然是AI分析师就得让它自动化。在Linux环境下最常用的定时任务工具是crontab。在终端里输入crontab -e会打开一个编辑器。在里面添加一行# 每天上午9点30分开盘后和下午3点收盘后各运行一次爬虫脚本 30 9 * * 1-5 /usr/bin/python3 /你的路径/stock_spider.py /你的路径/stock.log 21 0 15 * * 1-5 /usr/bin/python3 /你的路径/stock_spider.py /你的路径/stock.log 21这行命令的意思是每周一到周五1-5的9点30分和15点整自动执行我们的Python脚本并且把运行日志追加到stock.log文件里。这样一来你的爬虫就成了一个不知疲倦的小助手每天准时帮你采集数据。4. 数据清洗与整合喂给AI“干净”的粮食爬虫抓回来的数据往往是原始的、杂乱的。直接丢给AI它可能“吃坏肚子”。所以我们需要做一步“数据清洗”把数据整理成AI容易理解的格式。4.1 清洗数据处理异常和缺失爬虫过程中可能会遇到网络错误、页面改版等问题导致抓回来的数据是空的或者格式不对。我们需要在代码里增加一些“容错”处理。改进一下之前的get_stock_price函数def get_stock_price_enhanced(stock_code): url fhttps://hq.sinajs.cn/list{stock_code} headers {User-Agent: Mozilla/5.0 ...} try: response requests.get(url, headersheaders, timeout10) # 设置10秒超时 response.encoding gbk if response.status_code ! 200: print(f警告请求{stock_code}失败状态码{response.status_code}) # 这里可以尝试重试或者记录到错误日志 return None, None, None # 多返回一个状态 data_str response.text if hq_str not in data_str: print(f警告{stock_code}返回的数据格式异常) return None, None, 格式错误 # ... 原有的解析逻辑 ... # 假设我们成功解析出了价格 price_float float(current_price) # 数据合理性校验股价通常不会低于0.01元或高于10万元 if price_float 0.01 or price_float 100000: print(f警告{stock_code}价格{price_float}异常可能数据有误) return stock_name, current_price, 价格异常 return stock_name, current_price, 成功 except requests.exceptions.Timeout: print(f错误获取{stock_code}超时) return None, None, 超时 except ValueError as e: print(f错误解析{stock_code}价格时出错: {e}) return None, None, 解析错误 except Exception as e: print(f未知错误{e}) return None, None, 未知错误你看我们增加了超时控制、数据格式校验、数值合理性判断并且对不同类型的错误进行了分类。这样即使某个股票数据抓取失败也不会影响整个程序我们还能知道失败的原因是什么。4.2 整合数据生成AI喜欢的格式daily_stock_analysis项目内部有它自己约定的数据格式。我们的爬虫抓取到数据后最好能转换成项目能直接使用的格式比如一个JSON文件或者直接写入数据库。假设项目需要一个stock_data.json文件格式如下[ { symbol: 600519.SH, name: 贵州茅台, current_price: 1850.50, change: 0.85%, update_time: 2024-01-01 15:00:00 } ]那我们可以在批量抓取函数最后加上数据保存的逻辑import json from datetime import datetime def save_to_json(data_list, filenamestock_data.json): 将股票数据保存为JSON格式 output_data [] for item in data_list: output_data.append({ symbol: item[code].replace(sh, ).replace(sz, ) .SH if sh in item[code] else .SZ, name: item[name], current_price: float(item[price]), update_time: datetime.now().strftime(%Y-%m-%d %H:%M:%S) }) with open(filename, w, encodingutf-8) as f: json.dump(output_data, f, ensure_asciiFalse, indent2) print(f数据已保存至 {filename})保存成JSON的好处是结构清晰很多编程语言都能方便地读取。daily_stock_analysis的主程序就可以直接加载这个文件获取最新的股票数据。5. 连接与测试让你的爬虫为AI服务数据有了环境也有了最后一步就是把它们串联起来让daily_stock_analysis系统能用上我们爬取的数据。5.1 配置AI分析系统回到daily_stock_analysis项目目录我们需要进行一些配置。最简单的方式是复制环境变量模板文件cp .env.example .env然后用文本编辑器打开.env文件你会看到很多配置项。最关键的是这几行# 1. 设置你的自选股列表 (用逗号分隔) STOCK_LIST600519,000858,300750 # 2. 设置AI模型 (二选一) # 如果你有Google Gemini的API Key免费申请 GEMINI_API_KEYyour_gemini_api_key_here # 或者如果你用DeepSeek、通义千问等兼容OpenAI的模型 OPENAI_API_KEYyour_openai_api_key OPENAI_BASE_URLhttps://api.deepseek.com/v1 OPENAI_MODELdeepseek-chat # 3. 设置通知方式 (比如企业微信) WECHAT_WEBHOOK_URLyour_wechat_webhook_url把STOCK_LIST改成你自己的股票代码。然后去申请一个AI模型的API KeyGemini免费DeepSeek也便宜。最后如果你希望每天收到推送就去配置一个企业微信或飞书的机器人把Webhook地址填进来。5.2 修改数据源指向我们的爬虫默认情况下daily_stock_analysis使用AkShare等库获取数据。为了让它使用我们爬虫抓取的数据我们需要做一点小小的“嫁接”。找到项目里获取股票行情的代码文件通常在data_provider或sources目录下。我们不需要改动核心逻辑只需在合适的位置添加一个从我们本地JSON文件读取数据的函数并让它优先使用我们的数据。例如创建一个新文件custom_data_loader.pyimport json import os from datetime import datetime, timedelta def load_custom_stock_data(json_filestock_data.json): 从本地JSON文件加载爬虫获取的股票数据 if not os.path.exists(json_file): print(f自定义数据文件 {json_file} 不存在将使用默认数据源。) return None try: with open(json_file, r, encodingutf-8) as f: data json.load(f) # 检查数据是否新鲜比如是今天的数据 if data: latest_time data[0].get(update_time) # 这里可以添加时间有效性校验逻辑 # ... print(f成功从自定义文件加载 {len(data)} 条股票数据。) return data else: return None except Exception as e: print(f加载自定义数据失败: {e}) return None # 然后在项目主逻辑中可以这样调用 # custom_data load_custom_stock_data() # if custom_data: # # 使用自定义数据 # process_data(custom_data) # else: # # 回退到默认数据源 # default_data get_default_data()这样当我们的爬虫定时运行并更新了stock_data.json文件后AI分析系统在运行时就会优先采用这份更新鲜、更定制化的数据。5.3 运行与验收所有配置都搞定后在项目根目录下运行python main.py如果一切顺利你会看到程序开始运行获取数据、调用AI分析、生成报告。稍等片刻如果你配置了通知你的手机就会“叮”的一声收到一份像下面这样的AI分析报告[AI决策仪表盘] 买入 | 贵州茅台(600519) 缩量回踩MA5支撑乖离率1.2%处于最佳买点 建议: 买入1800 | 止损1750 | 目标1900 多头排列 乖离安全 量能配合 --- 生成时间: 18:00恭喜你到这里一个集成了自动数据采集Python爬虫和智能分析AI大模型的股票分析系统就完全在你的掌控之中了。整个过程从无到有我们经历了环境部署、爬虫编写、数据清洗、系统集成。最棒的是它完全在你的私有环境里运行数据经过你的手分析逻辑由你定制。回过头看技术并没有想象中那么高深。它就是一系列自动化步骤的组合定时抓取、清洗整理、交给AI总结、推送结果。你每天需要做的就是花一分钟看看手机上的推送报告把省下来的几个小时用在更深入的思考和决策上。这个系统就像一个不知疲倦的初级研究员帮你完成了信息收集和整理的工作。但它终究是个工具最后的投资决策还需要你结合自己的经验和判断。用它来提高效率、辅助决策而不是完全依赖它这才是技术的正确打开方式。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。