从网页上刮取网页数据
问题描述:
我想从一个网站的数据存储在一个内部div的所有图像,我如何获取所有图像。我试过了,但它不能工作。这里是我的代码从网页上刮取网页数据
<?php
$html = file_get_contents('http://en.vonvon.me/'); //get the html returned from the following url
$pokemon_doc = new DOMDocument();
libxml_use_internal_errors(TRUE); //disable libxml errors
if(!empty($html)){ //if any html is actually returned
$pokemon_doc->loadHTML($html);
libxml_clear_errors(); //remove errors for yucky html
$pokemon_xpath = new DOMXPath($pokemon_doc);
//get all the h2's with an id
$pokemon_row = $pokemon_xpath->query('div[class=desc ng-binding]');
if($pokemon_row->length > 0){
foreach($pokemon_row as $row){
echo $row->nodeValue . "<br/>";
}
}
}
?>
答
你不能删除JavaScript工作的网站[Angular],那么在JavaScript执行后,抓取者没有看到DOM。
但在另一方面,如果图像是在DOM中,你可以使用
造成这种情况的最好的事情是Simple HTML DOM Parser
$html = file_get_html('http://vonvon.me/');
// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';
+0
你能看到现在的代码,图像是在一个内部的股利,这就是为什么我这样做,但它仍然无法正常工作。 – user7657378
+1
对不起,我没有看到DOM,发布答案之前,网站使用Angular JS,你不能废弃它。 –
那么,有什么问题?没有或错误的输出?错误讯息?检查错误日志? Btw ..如果你的代码不起作用,你应该删除'@'符号,因为这些符号会抑制错误消息,这在调试时很有用。 –