HTML DOM только очистить самое большое изображение - PullRequest
0 голосов
/ 23 января 2012

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

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

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

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

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

Пример Amazon Пример Ebay

UPDATE

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

Кнопка списка желаний Amazon

Ответы [ 2 ]

0 голосов
/ 15 февраля 2014
foreach($html->find('img') as $e)
if (strpos($e,'SX300') !== false) { 
    $image = $e;
}
else if (strpos($e,'SY300') !== false) { 
    $image = $e;
}   
0 голосов
/ 23 января 2012

Похоже, что eBay использует id = "i_vv4-35" и Amazon имеет onclick = "openImmersiveView (event)"

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

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