以下是简单的使用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的文档以了解更多详细的语法和用法。
版权声明:本文发布于与老涂一起写代码 内容均来源于互联网 如有侵权联系删除
快来评论,快来抢沙发吧~