在thinkphp项目中执行php think quickcrawl命令,即可完成网页抓取并生成带格式的word汇报文档:先用querylist采集https://httpbin.org/html的标题和首段正文,再通过phpword生成含样式、时间戳命名的.docx文件存于runtime/crawl/目录。

你需要在ThinkPHP项目里快速抓取一个公开网页,提取标题和正文,生成带格式的汇报文档,不写重复代码、不配环境、不查报错日志——直接跑通一次真实采集并输出可读结果。
安装基础采集组件
打开终端,进入你的ThinkPHP项目根目录(确保已安装PHP 8.0+和Composer),执行:
composer require jaeger/querylist
这一步必须完成,否则后续所有QueryList调用都会触发Class not found错误,且无法通过autoload自动修复。
创建可运行的采集命令
执行命令生成命令类:
php think make:command QuickCrawl
打开app/command/QuickCrawl.php,在execute()方法中填入以下内容:
① 初始化QueryList并禁用默认超时重试(避免干扰首次验证):
$ql = QueryList::getInstance()->use(Extender::MultiDownload());
② 设置目标URL与基础请求头,防止被直接拒绝:
$ql->get('https://httpbin.org/html', ['User-Agent' => 'Mozilla/5.0 (Win64)']);
③ 定义提取规则:只抓title文本和body内第一个p标签内容:
$rules = ['title' => ['title', 'text'], 'content' => ['body p:first-child', 'text']];
④ 执行采集并返回结构化数组:
$data = $ql->rules($rules)->query()->getData();
dump($data);
注入样式并导出为Word汇报
在同个命令类的execute()末尾追加Word生成逻辑:
方法一:直接复用PhpWord(若未安装则先执行composer require phpoffice/phpword)
【vendor/autoload.php已自动加载PhpWord,无需require_once】
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
$section->addText('网页抓取汇报', ['bold'=>true, 'size'=>24]);
$section->addTextBreak();
$section->addText('来源:https://httpbin.org/html', ['color'=>'666']);
$section->addTextBreak();
$section->addText('标题:'.$data[0]['title'], ['bold'=>true]);
$section->addText('摘要:'.$data[0]['content']);
保存文件:
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save('runtime/crawl/report_'.date('Ymd_His').'.docx');
这一步完成后,【runtime/crawl/目录下将生成一个.docx文件,双击即可用WPS或Office打开查看】。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











