2012-01-23 3 views
0

У меня есть букмарклет, который смотрит на страницу и извлекает все изображения для просмотра пользователем.html DOM только scrape наибольшее изображение

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 или Амазонки и т.д. - в идеале, я хочу, чтобы показать реальное изображение от продукта, в отличие от любого логотипа/кнопка и т. д. но как?

Я понимаю, что они не обертывают их в теги, как, например, есть ли другой способ сделать это?

Возможно, по размеру? размер изображения в пикселях и/или размер файла? (Будет ли это быть признаком так или иначе? Это немного предположения)

Два примера, так что вы можете увидеть, что я имею в виду, если вы используете код выше (вы OBV должны получить simple_html_dom.php)

Amazon example ebay example

UPDATE

Amazon фактически делает что-то подобное, я нашел - это никогда не может быть совершенным, как вы полагаетесь на всех Дев людей писать то же самое, это не случится! Это самое близкое к функциональности, в которой я нуждаюсь. Он не только царапает наибольшее изображение, но, похоже, только царапины изображения, относящиеся к предмету, умные вещи?

Amazon wish list button

+0

[Простая документация HTML DOM] (http://simplehtmldom.sourceforge.net/manual.htm) – whichdan

+0

Поскольку вы используете/пытаетесь создать букмарклет, подумали ли вы о написании кода в javascript? И только передача найденного изображения на ваш сервер? Я думаю, это будет намного легче справиться, и вы даже можете добавить какой-то пользовательский интерфейс, чтобы получить одобрение пользователей. – Yoshi

+0

@Yoshi спасибо, я не так жарко на js, к сожалению ... у вас есть пример кода? Кроме того, вы имеете в виду утверждение, показывая все изображения, а затем позволяя пользователю выбрать один? Да, это было бы идеально, но опять же, я бы предпочел просто иметь изображения, относящиеся к предмету. –

ответ

0

Похоже eBay использует идентификатор = "i_vv4-35" и Amazon имеет OnClick = "openImmersiveView (событие)"

Попробуйте сделать что-то вроде:

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

Это работает для ebay и amazon да, но он должен быть общим - я просто нашел что-то, что делает, но не знаю, как - обновит вопрос –

0
foreach($html->find('img') as $e) 
if (strpos($e,'SX300') !== false) { 
    $image = $e; 
} 
else if (strpos($e,'SY300') !== false) { 
    $image = $e; 
} 
Смежные вопросы