一、获取 xml 数据
curl 库curl 库是一个非常常用的获取数据的 php 库。可以使用以下代码从某个网站上获取 xml 数据:
$url = 'http://example.com/example.xml';$ch = curl_init();curl_setopt($ch, curlopt_url, $url);curl_setopt($ch, curlopt_returntransfer, 1);$xml = curl_exec($ch);curl_close($ch);
这里我们使用了 curl_init() 初始化一个 curl 对象,并且设置了 curlopt_url 参数为目标 url。将 curlopt_returntransfer 参数设置为 1,将会使 curl 返回一个字符串而不是直接输出内容。
file_get_contents() 函数在 curl 库取得 xml 数据的同时, file_get_contents() 方式也可以取得 xml 数据。我们可以按照下面的例子来达到此目的:
$url = 'http://example.com/example.xml';$xml = file_get_contents($url);
二、解析 xml 数据
php 提供了多种方法来解析 xml 数据。
simplexmlsimplexml 是 php 中一个非常易于使用的 xml 解析器。我们可以按照下面的代码来使用 simplexml:
$xml = simplexml_load_string($xml);
这里我们使用了 simplexml_load_string() 方法来解析 xml 字符串并将其转换为对象。
例如,假设我们有以下 xml 文档:
<?xml version="1.0" encoding="utf-8" ?><bookstore> <book> <title>php 7 programming blueprints</title> <author>vikram vaswani</author> <price>28.99</price> </book> <book> <title>mastering php 7</title> <author>chad russell</author> <price>39.99</price> </book></bookstore>
我们可以使用以下代码来访问和输出此 xml 数据:
foreach ($xml->book as $book) { echo "title: " . $book->title . "<br>"; echo "author: " . $book->author . "<br>"; echo "price: " . $book->price . "<br>";}
输出结果如下:
title: php 7 programming blueprintsauthor: vikram vaswaniprice: 28.99title: mastering php 7author: chad russellprice: 39.99
domdocumentdomdocument 是另一个 php 中常用的 xml 解析器。我们可以按照下面的代码来使用 domdocument:
$doc = new domdocument();$doc->loadxml($xml);$books = $doc->getelementsbytagname("book");foreach ($books as $book) { $titles = $book->getelementsbytagname("title"); $title = $titles->item(0)->nodevalue; $authors = $book->getelementsbytagname("author"); $author = $authors->item(0)->nodevalue; $prices = $book->getelementsbytagname("price"); $price = $prices->item(0)->nodevalue; echo "title: " . $title . "<br>"; echo "author: " . $author . "<br>"; echo "price: " . $price . "<br>";}
这里我们使用了 domdocument 类来解析 xml 文档,然后利用 getelementsbytagname() 方法获取特定的元素。最后输出结果与 simplexml 解析器相同。
三、总结
在本篇文章中,我们学习了如何使用 php 爬虫获取并解析 xml 数据,其中包括使用 curl 库和 file_get_contents() 函数获取 xml 数据,使用 simplexml 和 domdocument 解析 xml 数据。希望本文对您有所帮助。
以上就是如何使用 php 爬虫获取并解析 xml 数据的详细内容。
