我想从网址抓取所有链接。
但我希望它以XML格式显示。
例如,我想从此网址http://www.example.com/xxxx/
我希望它像这样打印:
<a href="http://www.example.com/yyyy/" target="_blank">anotherxxx</a>
这里是我的代码,但我收到了错误
致命错误:未捕获的TypeError:参数1传递给 DOMDocument :: saveXML()必须是DOMNode的实例或null,string 在C:\ xampp \ htdocs \ sh \ index.php中给出:18堆栈跟踪:#0 C:\ xampp \ htdocs \ sh \ index.php(18):DOMDocument-&gt; saveXML('/')#1 {main} 在第18行的C:\ xampp \ htdocs \ sh \ index.php中抛出
$url = "http://www.example.com/xxxx/";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$html = curl_exec($ch);
curl_close($ch);
$dom = new DOMDocument();
@$dom->loadHTML($html);
foreach($dom->getElementsByTagName('a') as $link) {
$short_link = $link->getAttribute('href');
echo $short_link1 = $dom->saveXML($short_link);
echo "<br />";
}
答案 0 :(得分:0)
使用DOMXPath将所有链接检索为
yum install pecl
然后循环链接并将其html内容作为
$links = $xpath->query("//a/@href");
这里有完整的代码..
$dom->saveHTML($link)
答案 1 :(得分:0)
对getAttribute()
的调用会将属性值作为字符串返回。所以如果你只想要href那么
$short_link = $link->getAttribute('href');
echo $short_link;
...与
<a href="http://www.example.com/yyyy/" target="_blank">anotherxxx</a>
会给你http://www.example.com/yyyy/
如果你想要锚标签本身......
foreach($dom->getElementsByTagName('a') as $link) {
echo $dom->saveXML($link);
}
会给出
<a href="http://www.example.com/yyyy/" target="_blank">anotherxxx</a>