Php 使用DOMDocument从网站上抓取所有图像
我基本上希望使用DOMDocument获取任何网站中的所有图像。 但是,由于一些我还不知道的原因,我甚至不能加载我的htmlPhp 使用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 =
$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;
但这可能太多了。