html DOM只刮掉最大的图像

时间:2012-01-23 07:57:53

标签: php html simple-html-dom

我有一个书签,它可以查看页面并提取所有图像供用户查看。

include('simple_html_dom.php');

function getUrlAddress()
{
/*** check for https is on or not ***/
$url = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
/*** return the full address ***/
return $url .'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}

/*** example usage ***/
echo getUrlAddress ();

$html = file_get_html($url);

foreach($html->find('img') as $e)
    echo '<img src='.$e->src .'><br>';

现在,大多数时候用户会点击其上有特定产品的页面,可能来自ebay或亚马逊等 - 理想情况下,我希望显示产品的实际图像,而不是每个徽标/按钮等。如何?

我知道他们不会将它们包装在标签中,所以还有其他方法吗?

也许按尺寸? px和/或​​文件大小的图像大小? (这是指示性的吗?这是一个假设)

两个例子让你可以看到我的意思,如果你使用上面的代码(你必须得到simple_html_dom.php)

Amazon example ebay example

更新

亚马逊实际上做了类似我发现的东西 - 它永远不会是完美的,因为你依靠所有开发人员写同样的东西,不会发生!这最接近我需要的功能。它不仅刮掉最大的图像,而且似乎只刮掉与物品相关的图像,聪明的东西?

Amazon wish list button

2 个答案:

答案 0 :(得分:0)

看起来eBay使用id =“i_vv4-35”而亚马逊有onclick =“openImmersiveView(event)”

尝试做类似的事情:

if($site == 'eBay' && $e->id == 'i_vv4-35');
if($site == 'Amazon' && $e->onclick == 'openImmersiveView(event)');

答案 1 :(得分:0)

foreach($html->find('img') as $e)
if (strpos($e,'SX300') !== false) { 
    $image = $e;
}
else if (strpos($e,'SY300') !== false) { 
    $image = $e;
}