0

0

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

星夢妙者

星夢妙者

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

|

156人浏览过

|

来源于php中文网

原创

用 domdocument 解析 html 表格最稳,避免正则和 js 渲染陷阱;js 动态表格需找真实接口或 headless 浏览器;真 excel 文件用 phpspreadsheet,注意编码、缓存与响应头。

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

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免费学习笔记(深入)”;

    Pokecut
    Pokecut

    AI图片编辑处理工具,拥有超过50多种AI功能

    下载
    • 打开 Chrome DevTools → Network → 切到 XHR/Fetch,筛选关键词如 datalistexport,找到返回 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,先看清数据源头在哪。

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

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

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

    444

    2023.08.07

    json是什么
    json是什么

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

    544

    2023.08.23

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

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

    322

    2023.10.13

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

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

    81

    2025.09.10

    ajax教程
    ajax教程

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

    165

    2023.06.14

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

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

    168

    2023.08.31

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

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

    122

    2023.11.15

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

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

    245

    2024.09.24

    pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
    pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

    本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

    1030

    2026.02.13

    热门下载

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

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    PHP课程
    PHP课程

    共137课时 | 12.3万人学习

    JavaScript ES5基础线上课程教学
    JavaScript ES5基础线上课程教学

    共6课时 | 11.3万人学习

    PHP新手语法线上课程教学
    PHP新手语法线上课程教学

    共13课时 | 0.9万人学习

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

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号