php将HTML表格每行每列转为数组实现采集表格数据的方法

yizhihongxing

要将HTML表格的每行每列转为数组,实现采集表格数据,可以采用以下步骤:

1.首先,根据table标签的id或class属性找到目标表格。

2.通过PHP的DOMDocument类,将HTML代码解析为DOM结构,然后用DOMXPath类查找表格中的每一行。

3.对每一行进行循环遍历,将每个单元格的内容存入关联数组中,并将该数组存入外层的索引数组中。

4.最后,返回整个二维数组。

以下是示例代码:

示例1:

<?php
$html = '<table>
            <tr>
                <td>Name</td>
                <td>Age</td>
                <td>Gender</td>
            </tr>
            <tr>
                <td>John</td>
                <td>25</td>
                <td>Male</td>
            </tr>
            <tr>
                <td>Jane</td>
                <td>30</td>
                <td>Female</td>
            </tr>
        </table>';

$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$tableRows = $xpath->query('//table[@class="table"]//tr');

$data = [];

foreach ($tableRows as $row) {
    $rowData = [];
    foreach ($row->getElementsByTagName('td') as $cell) {
        $rowData[] = $cell->nodeValue;
    }
    $data[] = $rowData;
}

print_r($data);
?>

输出结果:

Array
(
    [0] => Array
        (
            [0] => Name
            [1] => Age
            [2] => Gender
        )

    [1] => Array
        (
            [0] => John
            [1] => 25
            [2] => Male
        )

    [2] => Array
        (
            [0] => Jane
            [1] => 30
            [2] => Female
        )

)

示例2:

<?php
$html = '<table id="my-table">
            <tr>
                <td>Product</td>
                <td>Price</td>
            </tr>
            <tr>
                <td>Shoes</td>
                <td>$50</td>
            </tr>
            <tr>
                <td>Shirt</td>
                <td>$20</td>
            </tr>
        </table>';

$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$tableRows = $xpath->query('//table[@id="my-table"]//tr');

$data = [];

foreach ($tableRows as $row) {
    $rowData = [];
    foreach ($row->getElementsByTagName('td') as $cell) {
        $rowData[] = $cell->nodeValue;
    }
    $data[] = $rowData;
}

print_r($data);
?>

输出结果:

Array
(
    [0] => Array
        (
            [0] => Product
            [1] => Price
        )

    [1] => Array
        (
            [0] => Shoes
            [1] => $50
        )

    [2] => Array
        (
            [0] => Shirt
            [1] => $20
        )

)

通过以上示例能够看出,对于不同的HTML表格,通过修改XPath表达式可以找到不同的表格,并将其转换为二维数组的形式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php将HTML表格每行每列转为数组实现采集表格数据的方法 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 使用lua实现php的print_r()函数功能

    使用Lua实现类似于PHP的print_r()函数,可以帮助我们更好的了解一些数据类型及数据结构的内部结构。下面我将提供一些基本步骤以及示例代码来解释如何实现这个功能。 步骤 定义一个递归函数(recursive function),该函数可以检查数据类型,如果是表格(table)类型,则继续遍历该表格并在每个元素之间添加逗号和换行符。 如果遇到嵌套的表格,…

    PHP 2023年5月26日
    00
  • PHP中使用file_get_contents抓取网页中文乱码问题解决方法

    当PHP使用file_get_contents()函数获取网页内容时,由于不同编码的网页可能存在不同的字符集、编码方式,因此容易出现中文乱码的情况。下面是使用file_get_contents()函数抓取网页中文乱码问题的解决方法: 问题分析 首先需要了解当前网页的编码格式,如果是UTF-8编码,直接使用file_get_contents()函数读取即可,如…

    PHP 2023年5月27日
    00
  • php中foreach结合curl实现多线程的方法分析

    当我们需要对多个网站进行数据抓取时,可以使用多线程来加速抓取的效率。PHP中的curl库可以用来发送http请求来进行数据抓取,而结合foreach循环,可以实现多个curl请求同时发送,进而实现多线程抓取的效果。 一、curl库的基本使用 要使用curl库发送http请求,我们首先需要开启curl扩展,可以在php.ini文件中将其打开,或者使用函数ext…

    PHP 2023年5月26日
    00
  • php;//filter的介绍和应用

    知识点 php://filter php://filter是一种元封装器,是PHP中特有的协议流,设计用于数据流打开时的筛选过滤应用,作用是作为一个“中间流”来处理其他流。php://filter目标使用以下的参数作为它路径的一部分。复合过滤链能够在一个路径上指定。 名称 描述 备注 resource=<要过滤的数据流> 指定了你要筛选过滤的数据…

    PHP 2023年4月18日
    00
  • Laravel中间件的使用详解

    下面是“Laravel中间件的使用详解”的完整使用攻略,包括中间件的基本原理、中间件的使用方法和两个示例说明。 中间件的基本原理 在Laravel中,中间件是一种用于处理HTTP请求和响应的机制。中间件可以在请求到达应用程序之前或之后执行一些操作,如身份验证、日志记录、缓存等。 中间件的基本原理是:在请求到达应用程序之前或之后执行一些操作。中间件可以修改请求…

    PHP 2023年5月12日
    00
  • PHP实现15位身份证号转18位的方法分析

    PHP实现15位身份证号转18位的方法分析 在国家实行全民身份证制度之前,早期颁发的身份证都只有15位号码,这些15位身份证号的最后一位校验码是随机生成的。在现在的全民身份证制度下,身份证号码都是18位,其中最后一位是通过前17位号码计算得出的校验码。对于一些老旧的记录系统或早期数据采集结果,需要将15位身份证号转换成18位,这就需要用到身份证号码的规则。 …

    PHP 2023年5月26日
    00
  • php之phpStudy的配置和工具的选择

      最近在考虑用php的成品源码去搭建一个个人博客网页,于是就想着先在本地运行好后,然后再使用服务器来搭建php的环境和网页。   1.运行工具   因为本地基本只是考虑练习,不考虑真正的去搭建php环境,所以就想到了一个很实用的php小工具,用于测试可以说是一个很不错的选择:phpStudy_pro,一个免费且好用的小集成环境吧(应该是)。   总结:ph…

    PHP 2023年4月17日
    00
  • 微信小程序存在漏洞吗 微信小程序会堵上那些app漏洞吗

    微信小程序存在漏洞吗 是的,微信小程序同样存在漏洞。随着微信小程序的普及和使用,黑客也开始尝试攻击微信小程序,以获取非法利益或窃取用户信息等。 微信小程序攻击包括以下漏洞类型: XSS(跨站脚本)漏洞:黑客可以通过注入恶意脚本,来窃取用户信息、欺骗用户等。 CSRF(跨站请求伪造)漏洞:黑客可以通过构造特制的链接或网页,来进行针对性攻击,如恶意转账、修改用户…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部