返回介绍

表格采集

发布于 2021-04-06 13:23:43 字数 1820 浏览 1094 评论 0 收藏 0

由于网页中的table表格每一行、每一列没有明显的classid,让很多人对采集表格感觉束手无策。

下面演示如何通过伪选择器来采集表格。

示例

采集代码:
 use QL\QueryList;

$html =<<<STR
    <div>
        <table>
            <tr>
                <td>姓名</td>
                <td>年龄</td>
                <td>职位</td>
            </tr>
            <tr>
                <td>Rae</td>
                <td>29</td>
                <td>医生</td>
            </tr>
            <tr>
                <td>Marsh</td>
                <td>56</td>
                <td>牧师</td>
            </tr>
            <tr>
                <td>Solomon</td>
                <td>18</td>
                <td>作家</td>
            </tr>
        </table>
    </div>
STR;

$table = QueryList::html($html)->find('table');

// 采集表头
$tableHeader = $table->find('tr:eq(0)')->find('td')->texts();
// 采集表的每行内容
$tableRows = $table->find('tr:gt(0)')->map(function($row){
    return $row->find('td')->texts()->all();
});

print_r($tableHeader->all());
print_r($tableRows->all());
采集结果:
Array
(
    [0] => 姓名
    [1] => 年龄
    [2] => 职位
)
Array
(
    [0] => Array
        (
            [0] => Rae
            [1] => 29
            [2] => 医生
        )

    [1] => Array
        (
            [0] => Marsh
            [1] => 56
            [2] => 牧师
        )

    [2] => Array
        (
            [0] => Solomon
            [1] => 18
            [2] => 作家
        )

)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文