基于 Laravel 12 + PHP 8.2 + SQLite 的个股研报抓取与 AI 分析项目。
项目定位:抓取东方财富个股研报数据,沉淀结构化研报库,并通过 AI 提取投资观点、风险点、情绪倾向和核心摘要。
- PHP 8.2+
- Composer 2.2+
- SQLite 扩展:
pdo_sqlite、sqlite3
当前本机 PHP 8.2 路径:
php当前项目内临时 Composer 文件:
composer-local.phar注意:当前系统全局
php可能仍然指向 PHP 8.1,因此下面命令都显式使用 PHP 8.2 路径。
首次拉取项目后,在项目根目录执行:
php composer-local.phar install如果没有 .env 文件,复制一份:
cp .env.example .env生成应用密钥:
php artisan key:generate确认数据库文件存在:
touch database/database.sqlite执行数据库迁移:
php artisan migrate当前项目默认使用 SQLite,配置在 .env:
DB_CONNECTION=sqlite本项目提供 Artisan 命令用于从东方财富接口全量抓取 A 股股票基础信息,并保存到本地 SQLite 的 stocks 表中。
每次 Cookie 过期后,只需要把浏览器里复制到的最新完整 curl 命令粘贴到:
storage/app/eastmoney/stock_clist.curl
.env 只保存 curl 文本文件路径,避免 curl 内容里的引号导致配置解析失败:
EASTMONEY_STOCK_CLIST_CURL_FILE=storage/app/eastmoney/stock_clist.curl可选配置:
EASTMONEY_STOCK_PAGE_SIZE=100
EASTMONEY_TIMEOUT=15
EASTMONEY_VERIFY_SSL=false
EASTMONEY_RETRY_TIMES=3
EASTMONEY_RETRY_SLEEP_MS=500首次使用前确认已执行数据库迁移:
php artisan migrate先试跑抓取,不写入数据库:
php artisan stocks:fetch-ashare --dry-run正式全量抓取并更新本地 SQLite:
php artisan stocks:fetch-ashare默认会删除本次全量抓取中没有出现的旧股票记录。如果想保留旧记录,可以执行:
php artisan stocks:fetch-ashare --keep-missing本项目提供 Artisan 命令用于遍历 stocks 表中的股票代码,抓取东方财富个股研报页面,并保存页面里的 stockInfo 和 initdata.data 关键信息。
每次 Cookie 过期后,把浏览器里复制到的最新完整研报页面 curl 命令粘贴到:
storage/app/eastmoney/report.curl
.env 中的相关配置:
EASTMONEY_REPORT_CURL_FILE=storage/app/eastmoney/report.curl
EASTMONEY_REPORT_URL_TEMPLATE=https://data.eastmoney.com/report/{code}.html
EASTMONEY_REPORT_SLEEP_MS=200首次使用前确认已执行迁移,并已先抓取股票基础信息:
php artisan migrate
php artisan stocks:fetch-ashare先试跑单只股票,不写入数据库:
php artisan reports:fetch-eastmoney --code=603439 --dry-run正式抓取单只股票:
php artisan reports:fetch-eastmoney --code=603439分批抓取:
php artisan reports:fetch-eastmoney --limit=100 --offset=0如果需要重新抓取单只股票已有研报页面信息:
php artisan reports:fetch-eastmoney --code=603439 --force如果需要全量重新抓取所有股票的研报页面信息:
php artisan reports:fetch-eastmoney --force启动 Laravel 开发服务器:
php artisan serve启动后浏览器访问:
http://127.0.0.1:8000
查看 Laravel 项目信息:
php artisan about查看路由:
php artisan route:list重新执行迁移:
php artisan migrate:fresh运行测试:
php artisan test如果后续使用 Laravel 前端资源构建,需要安装 Node 依赖:
npm install开发模式:
npm run dev生产构建:
npm run build