Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用DOMDocument从网站上抓取所有图像_Php_Kohana 3.2 - Fatal编程技术网

Php 使用DOMDocument从网站上抓取所有图像

Php 使用DOMDocument从网站上抓取所有图像,php,kohana-3.2,Php,Kohana 3.2,我基本上希望使用DOMDocument获取任何网站中的所有图像。 但是,由于一些我还不知道的原因,我甚至不能加载我的html $url="http://<any_url_here>/"; $dom = new DOMDocument(); @$dom->loadHTML($url); //i have also tried removing @ $dom->preserveWhiteSpace = false; $dom->saveHTML(); $images =

我基本上希望使用DOMDocument获取任何网站中的所有图像。 但是,由于一些我还不知道的原因,我甚至不能加载我的html

$url="http://<any_url_here>/";
$dom = new DOMDocument();
@$dom->loadHTML($url); //i have also tried removing @
$dom->preserveWhiteSpace = false;
$dom->saveHTML();
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) 
{
echo $image->getAttribute('src');
}
$url=“http://”;
$dom=新的DOMDocument();
@$dom->loadHTML($url)//我也尝试过移除@
$dom->preserveWhiteSpace=false;
$dom->saveHTML();
$images=$dom->getElementsByTagName('img');
foreach($images作为$image)
{
echo$image->getAttribute('src');
}
结果是什么也没印出来。还是我把代码弄错了

因为$dom->loadHTML()需要html,所以不会得到结果。给它一个url,首先需要得到要解析的页面的html。您可以使用file_get_contents()实现此目的

我在图像抓取课上用过这个。对我来说很好

$html = file_get_contents('http://www.google.com/');
$dom = new domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
  echo $image->getAttribute('src');
}

您没有收到错误消息的原因可能是这一行
@$dom->loadHTML($url)
在php中,@'隐藏了该函数的所有错误消息。我很久以前就删除了它,但仍然没有得到任何结果……您没有得到结果,因为
$dom->loadHTML()
需要html。如果给它一个url,首先需要得到要解析的页面的html。您可以使用
file\u get\u contents()。(参见答案)我添加了$html=file\u get\u contents(“),然后加载了html文件$dom->loadHTML($html);现在它给了我一个错误。错误:DOMDocument::loadHTML():在entity中重新定义的属性类我现在在entity error中重新定义了一个属性类。
$dom=new DOMDocument;$htmls=file\u get\u contents(”http://philcooke.com/inspiration-happens-but-the-best-ideas-take-time/“$dom->loadHTML($htmls);
您的答案几乎正确。只需在
$dom->loadHTML($html)
前面添加一个“@”字符,作为在
$dom->loadHTML($html)前面附加“@”的替代方法
要抑制错误,可以先使用tidy清理html。
$tidy=tidy\u parse\u string($html);$html=$tidy->html()->value;
但这可能太多了。