我想用PHP抓一个网站, 这是代码:
<?php
$url = 'http://sample.com';
$dom = new DOMDocument();
@$dom->loadHTMLFile($url);
$xpath = new DOMXpath($dom);
$contents = $xpath->query('//p[@class="ac"]');
$content = $dom->saveHTML($contents->item(0));
echo $content;
echo '<br />';
?>
但它只会返回第一个带有“ac”类的p标签,但是我希望它能返回所有结果。所以我编写了代码:
<?php
$url = 'http://sample.com';
$dom = new DOMDocument();
@$dom->loadHTMLFile($url);
$xpath = new DOMXpath($dom);
$contents = $xpath->query('//p[@class="ac"]');
$content = $dom->saveHTML($contents->item(0));
for($i=0;$i<$contents->length; $i++){
echo $contents->item($i);
}
echo '<br />';
?>
但是,它给了我这个错误:
捕获致命错误:类DOMElement的对象无法转换为
中的字符串
我做错了什么?
答案 0 :(得分:1)
$ contents-&gt; item($ i)是DomElement对象。您可以打印$contents->item($i)->nodeValue
以获取段落文本或以$content = $dom->saveHTML($contents->item($i))
方式获取outerhtml。
但我更喜欢这样的循环
$xpath = new DOMXpath($dom);
foreach($xpath->query('//p[@class="ac"]') as $content)
echo $dom->saveHTML($content);
echo '<br />';