与老涂一起写代码

PHP使用xpath抓取网页并匹配节点内容

admin 393 ℃ 0 条
PHP使用xpath抓取网页并匹配节点内容

以下是简单的使用xpath爬取页面并匹配内容的示例:

// 创建一个DOM对象
$dom = new DOMDocument();

// 加载HTML内容
$html = file_get_contents('http://example.com');
$dom->loadHTML($html);

// 创建一个XPath对象
$xpath = new DOMXPath($dom);

// 使用XPath查询匹配的节点
// 例如,获取所有的<a>标签的href属性
$links = $xpath->query('//a/@href');

// 遍历匹配的节点并输出结果
foreach ($links as $link) {
    echo $link->nodeValue . "\n";
}

在上面的示例中,我们首先创建了一个DOMDocument对象,并使用loadHTML()方法加载了要爬取的网页内容。然后,我们创建了一个DOMXPath对象,它将用于执行XPath查询。接下来,我们使用query()方法执行XPath查询,传入一个XPath表达式,这里的表达式是//a/@href,它表示匹配所有的<a>标签的href属性。最后,我们使用foreach循环遍历匹配的节点,并输出结果。


XPath提供了多种方法来查询节点。以下是几种常用的XPath查询节点的方法:

1. 绝对路径:通过完整的路径来定位节点。例如,/html/body/div[1]/p[2]表示选择HTML文档中第一个div元素的第二个p元素。

2. 相对路径:相对路径是相对于当前节点的路径。例如,//div/p表示选择HTML文档中所有div元素下的p元素。

3. 节点名称:通过节点名称来选择节点。例如,//p表示选择HTML文档中的所有p元素。

4. 属性:通过节点的属性来选择节点。例如,//div[@class='container']表示选择所有class属性为container的div元素。

5. 索引:通过索引来选择节点。索引从1开始。例如,//p[3]表示选择HTML文档中的第三个p元素。

6. 逻辑运算符:XPath支持逻辑运算符AND、OR和NOT。例如,//div[@class='container' and @id='main']表示选择所有class属性为container且id属性为main的div元素。

7. 文本内容:通过节点的文本内容来选择节点。例如,//p[text()='Hello']表示选择文本内容为Hello的p元素。

8. 轴:XPath提供了多个轴,用于在节点之间导航。常用的轴包括child(子节点)、parent(父节点)、following-sibling(后续同级节点)等。


这只是XPath查询节点的一些常用方法,还有其他更高级的方法可以根据具体需求使用。XPath语法非常强大,可以根据文档的结构和要求进行灵活的查询和过滤操作。你可以参考XPath的文档以了解更多详细的语法和用法。


发表评论 (已有0条评论)

快来评论,快来抢沙发吧~