2012-01-23 34 views
0

我有一個書籤,它會查看一個頁面並提取所有圖像供用戶查看。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和/或​​文件大小的圖像大小? (這將是指示呢?這是一個有點假設的)

兩個例子,所以你可以看到我的意思是,如果你使用上面的代碼(你OBV必須得到simple_html_dom.php)

Amazon example ebay example

UPDATE

亞馬遜實際上做類似我發現的東西 - 因爲你依靠全體人民開發編寫相同的它不可能是完美的,是不會發生的!這與我需要的功能最爲接近。它不僅可以抓取最大的圖像,而且它似乎只能抓取與該物品相關的圖像,巧妙的東西?

Amazon wish list button

+0

[簡單的HTML DOM文檔](http://simplehtmldom.sourceforge.net/manual.htm) – whichdan

+0

既然你正在使用/試圖創建一個書籤,你有沒有考慮過在javascript中編寫代碼?只有將找到的圖像傳遞給您的服務器?我想這會更容易處理,你甚至可以添加某種UI來獲得用戶的認可。 – Yoshi

+0

@Yoshi謝謝,我對js不太熱,不幸的是...你有代碼示例嗎?另外,您是指通過顯示所有圖像,然後讓用戶選擇一個圖像來獲得批准?是的,這將是理想的,但是,我寧願只是有與該項目相關的圖像。 –

回答

0

它看起來像eBay使用ID = 「i_vv4-35」 和亞馬遜的onclick = 「openImmersiveView(事件)」

嘗試做這樣的事情:

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

這適用於易趣和亞馬遜是的,但它需要是通用的 - 我只是發現了一些但不知道如何 - 將更新問題 –

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