讲师中心 微信公众号
AI工具推荐 视频效率加速

爬虫如何抓取表格_PHP抓取Excel在线表格数据技巧【详解】

轻浩吖_4195

轻浩吖_4195

发布时间:2026-02-23 00:03:28

|

236人浏览过

|

来源于php中文网

原创

用 DOMDocument 解析 HTML 表格最稳,避免正则和 JS 渲染陷阱;JS 动态表格需找真实接口或 Headless 浏览器;真 Excel 文件用 PhpSpreadsheet,注意编码、缓存与响应头。

爬虫如何抓取表格_php抓取excel在线表格数据技巧【详解】

记录数据一键导出 Excel/CSV(带样式)
记录数据一键导出 Excel/CSV(带样式)

把记录数组导出为带样式的 Excel(xlsx) 或带 BOM 的 CSV。支持列配置(表头/宽度/顺序)、表头冻结首行、斑马纹、布尔值转「是/否」、数组换行、CSV 中文防乱码。零依赖。触发词:导出 Excel、导出 CSV、记录转表格、列配置导出、数据导出、表格美化、JSON 转表格。

下载

PHP 直接解析 HTML 表格用 DOMDocument 最稳

HTML 中的表格(<table>)不是 Excel 文件,但常被误称为“在线表格”。想抓取这类内容,别碰 Excel 解析库——直接用 PHP 原生 <code>DOMDocument + DOMXPath 更轻、更快、更可靠。

常见错误是先用 file_get_contents() 拿到 HTML 后,用正则硬扒 <tr><code><td>,一遇到换行、属性顺序变化或嵌套标签就崩。DOM 解析能自动处理这些。 <ul> <li>确保目标页面编码一致,加载前加 <code>$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'))

  • 用 $xpath->query('//table[@id="data-table"]//tr') 精准定位,避免匹配到页眉页脚的无关表格
  • 空单元格或带 <span></span>/<a></a> 的单元格,需递归提取文本:trim($cell->textContent),而非直接读 $cell->nodeValue
  • 遇到 JavaScript 渲染的表格?别硬上 file_get_contents

    如果浏览器里能看到表格,但 PHP 用 file_get_contents() 抓回来是空的或只有占位符,基本确定数据由 JS(如 Vue/React/AJAX)动态注入。这时 PHP 本身无法执行 JS,硬解析 HTML 源码没用。

    可行路径只有两条:找真实接口、或换环境执行 JS。前者优先。

    立即学习“PHP免费学习笔记(深入)”;

    • 打开 Chrome DevTools → Network → 切到 XHR/Fetch,筛选关键词如 data、list、export,找到返回 JSON 或 CSV 的请求 URL
    • 该接口若带 Referer 或 Cookie 校验,用 curl_setopt($ch, CURLOPT_COOKIE, $cookie_str) 补全;若校验 User-Agent,记得设成浏览器值
    • 真没接口?再考虑 Headless 浏览器(如 Puppeteer + PHP 调用 Node.js),但部署成本高、响应慢,不是“抓取表格”的默认解法

    真要读 Excel 文件(.xlsx/.xls)?用 PhpSpreadsheet,别碰 PHPExcel

    PHPExcel 已停止维护,PHP 7.2+ 会报致命错误;PhpSpreadsheet 是其官方继任者,支持现代 Excel 格式,且内存控制更好。

    注意:它只处理本地文件或可访问的 HTTP URL(需开启 allow_url_fopen),不能直接解析 HTML 页面里的“表格外观”。

    • 远程 Excel 文件建议先 file_put_contents() 下载到临时路径,再用 IOFactory::load($tmp_file),避免流式读取超时或中断
    • 大文件(>10MB)务必启用缓存:Settings::setCacheStorage(new MemoryCache()),否则可能 OOM
    • 读取时指定工作表名比索引更安全:$spreadsheet->getSheetByName('汇总')->toArray(),防止 Excel 新增隐藏表打乱顺序

    导出为 Excel 时中文乱码?根源在字符集和 MIME 类型

    很多人把数组用 fputcsv() 写成 .csv,然后改后缀叫 Excel——这在 Excel 打开时大概率中文变问号。根本原因是 CSV 本身无编码声明,Excel 默认用系统 ANSI(如 GBK),而 PHP 输出是 UTF-8。

    • 方案一(推荐):用 PhpSpreadsheet 写入,它自动处理 UTF-8 字符,输出的 .xlsx 在所有平台正常显示
    • 方案二(轻量):写 CSV 时加 BOM 头:echo "\xEF\xBB\xBF";,再输出 UTF-8 内容,Excel 识别为 UTF-8
    • HTTP 响应头必须明确:header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');(xlsx)或 text/csv; charset=UTF-8(csv),缺一不可
    实际项目里,90% 的所谓“在线 Excel 表格”本质是 HTML 表格或 AJAX 返回的 JSON;真正需要操作原生 Excel 文件的场景,往往出现在导出报表、对接财务系统等环节。别一上来就装 PhpSpreadsheet,先看清数据源头在哪。

    相关文章

    PHP速学教程(入门到精通)
    PHP速学教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热门AI工具

    更多
    音述AI
    音述AI Hot

    一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

    二狗PPT
    二狗PPT Hot

    一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

    切问学术

    切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

    创客贴AI

    创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

    WorkBuddy

    一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

    DeepSeek

    DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

    Lovart
    Lovart Hot

    一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

    蛙蛙写作

    一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

    豆包大模型

    豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

    相关专题

    更多
    json数据格式
    json数据格式

    JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

    2275

    2023.08.07

    json是什么
    json是什么

    JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

    3702

    2023.08.23

    jquery怎么操作json
    jquery怎么操作json

    操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

    1236

    2023.10.13

    go语言处理json数据方法
    go语言处理json数据方法

    本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

    4259

    2025.09.10

    ajax教程
    ajax教程

    php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    3320

    2023.06.14

    ajax中文乱码解决方法
    ajax中文乱码解决方法

    ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

    360

    2023.08.31

    ajax传递中文乱码怎么办
    ajax传递中文乱码怎么办

    ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    3153

    2023.11.15

    ajax网站有哪些
    ajax网站有哪些

    使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    1161

    2024.09.24

    Postman身份认证怎么配置
    Postman身份认证怎么配置

    本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

    0

    2026.11.06

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    墨刀帮助中心
    墨刀帮助中心

    共0课时 | 0人学习

    MyEclipse学习中心
    MyEclipse学习中心

    共0课时 | 0人学习

    Apache Subversion 官方手册
    Apache Subversion 官方手册

    共0课时 | 0人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn