📜  使用简单的 HTML DOM 解析器在PHP抓取网页(1)

📅  最后修改于: 2023-12-03 14:49:56.710000             🧑  作者: Mango

使用简单的 HTML DOM 解析器在PHP抓取网页

在 PHP 中抓取网页通常需要使用到解析工具,其中一个非常好用的工具就是 HTML DOM 解析器。该解析器可以通过 PHP 对 HTML 文档进行解析,找到其中的元素、属性和文本节点,实现数据的提取和操作,非常方便。

安装 HTML DOM 解析器

在开始之前,需要先安装 HTML DOM 解析器。可以通过 Composer 进行安装,也可以手动下载源码文件并引入。

通过 Composer 安装

可以在项目根目录下通过 Composer 安装 HTML DOM 解析器:

composer require sunra/php-simple-html-dom-parser

安装完成后,可以通过以下方式引入:

require 'vendor/autoload.php';
手动下载源码

也可以手动下载 HTML DOM 解析器的源码,然后引入:

require 'path_to/simple_html_dom.php';
解析 HTML 文档

HTML DOM 解析器解析 HTML 文档非常简单,只需要使用 str_get_html() 函数即可。该函数接受一个 HTML 字符串,返回一个解析后的对象。

下面是一个示例程序,该程序抓取了某新闻网站的首页,并提取了其中的新闻标题和链接:

<?php
require 'vendor/autoload.php'; // 或者手动引入 simple_html_dom.php

$html_str = file_get_contents('https://news.sina.com.cn'); // 获取网页内容
$html = str_get_html($html_str); // 解析 HTML 文档

foreach ($html->find('a') as $a) { // 查找所有链接
    if ($a->class == 'news-title') { // 判断是否为新闻标题链接
        $title = $a->innertext; // 获取标题文本
        $link = $a->href; // 获取链接
        echo "- [$title]($link)\n"; // 输出标题和链接
    }
}

解析器会将 HTML 文档转换为一个元素树,可以通过 find() 方法查询其中的元素。该方法接受一个 CSS 选择器,返回一个包含所有符合条件的元素的数组。在上面的示例中,我们使用 find() 方法查找了所有链接,然后筛选出了新闻标题链接,并获取了它们的文本和链接地址。

总结

通过 HTML DOM 解析器,我们可以方便地解析 HTML 文档,并提取其中的元素、属性和文本节点。在实际开发中,可以将其应用于各种数据抓取和处理的场景中。