Home  >  Article  >  Backend Development  >  How to parse HTML content using PHP and XPath

How to parse HTML content using PHP and XPath

王林
王林Original
2023-06-17 11:17:581659browse

As Web technology continues to develop, the content of Web pages is becoming more and more complex. We often need to extract information from HTML pages for further processing and analysis, such as crawlers, data mining, etc. This article will introduce how to use PHP and XPath to parse HTML content and obtain the information we need quickly and easily.

  1. PHP Simple HTML DOM Parser

PHP Simple HTML DOM Parser is an open source PHP class library that can parse HTML pages into DOM tree structures, which can then be used jQuery-like selector syntax to find and manipulate DOM elements. The library provides built-in selector methods, as well as find() and xpath() methods for finding nodes, the latter of which requires the DOM extension to be installed and enabled.

Here is an example of using PHP Simple HTML DOM Parser to find titles and links:

<?php
require_once('simple_html_dom.php');

$html = file_get_html('http://example.com/');

// 查找所有的标题和链接
foreach ($html->find('h2') as $header) {
    echo $header->plaintext . '<br>';
    echo $header->next_sibling()->href . '<br>';
}
?>
  1. Using DOMDocument and DOMXPath

In addition to PHP Simple HTML DOM Parser, PHP also provides built-in DOMDocument and DOMXPath class libraries, which can parse and search HTML pages. DOMDocument is a class similar to SimpleXML that can parse an XML or HTML document into a DOM tree structure, while DOMXPath provides an xpath() method to find and select nodes using XPath.

The following is an example of using DOMDocument and DOMXPath to find titles and links:

<?php
$html = file_get_contents('http://example.com/');

// 创建 DOMDocument 对象并加载 HTML
$dom = new DOMDocument();
@$dom->loadHTML($html);

// 创建 DOMXPath 对象并使用 xpath 查找节点
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//h2') as $node) {
    // 查找标题
    echo $node->nodeValue . '<br>';

    // 查找链接
    $link = $xpath->query('./following-sibling::a', $node);
    if ($link->length > 0) {
        echo $link->item(0)->getAttribute('href') . '<br>';
    }
}
?>

In the above example, we use the query() method to find all h2 title nodes and use XPath The expression obtains their text content and the href attribute value of the first following a node. Note: Expressions in DOMXPath must follow the W3C XPath specification.

  1. Summary

This article describes how to use PHP and XPath to parse HTML page content. PHP Simple HTML DOM Parser can easily use selector syntax similar to jQuery to find and manipulate DOM elements, but its performance is relatively low for large HTML pages. DOMDocument and DOMXPath provide more flexible and efficient parsing and searching methods, but require a certain learning cost. It is important to choose the appropriate parsing method according to actual needs and specific situations.

The above is the detailed content of How to parse HTML content using PHP and XPath. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn