jabbaxatt
Добрый модератор
- Регистрация
- 21 Янв 2009
- Сообщения
- 902
- Реакции
- 433
- Автор темы
- #1
Точнее - получение адреса первых гугл картинок по определённому слову.
Вопрос как правильно вычленить (регулярным выражением?) нужные ссылки.
В загружаемой картинке ссылка находится в блоке
---------
id="rg_hpl" target="_blank" href="http :// www .google.ru/imgres?q=Кот Баюн&um=1&hl=en&newwindow=1&client=firefox-a&sa=N&rls={moz:distributionID}:{moz:locale}:{mozfficial}&ndsp=19&biw=1280&bih=616&prmdo=1&tbm=isch&tbnid=WREiXWJKX_1H-M:&imgrefurl=http:// ru .wikipedia.org/wiki/Кот_Баюн&docid=P3gy6pt7e6fsTM&imgurl=http: //upload.wikimedia.org/wikipedia/commons/thumb/2/21/Bajun.jpg/220px-Bajun.jpg&w=220&h=331&ei=jiV0UMiIEYyL4gT_m4CgCg&zoom=1&iact=rc&dur=328&sig=102787668848020487930&page=1&tbnh=146&tbnw=96&start=0&ved=1t:429,r:0,s:0,i:68&tx=50&ty=65" style="height: 146px;
------
Пока написал забор первой картинки, но код мне не нравится. Хотелось бы получать массив URL картинок и потом, если первая не грузится или не имеет расширения - пробовать вторую и т.д.
Мой код, который не нравиться:
Этот код забирает только первую картинку, и если она мне не подходит (битая) то всё, приплыли.
Вопрос как правильно вычленить (регулярным выражением?) нужные ссылки.
В загружаемой картинке ссылка находится в блоке
---------
id="rg_hpl" target="_blank" href="http :// www .google.ru/imgres?q=Кот Баюн&um=1&hl=en&newwindow=1&client=firefox-a&sa=N&rls={moz:distributionID}:{moz:locale}:{mozfficial}&ndsp=19&biw=1280&bih=616&prmdo=1&tbm=isch&tbnid=WREiXWJKX_1H-M:&imgrefurl=http:// ru .wikipedia.org/wiki/Кот_Баюн&docid=P3gy6pt7e6fsTM&imgurl=http: //upload.wikimedia.org/wikipedia/commons/thumb/2/21/Bajun.jpg/220px-Bajun.jpg&w=220&h=331&ei=jiV0UMiIEYyL4gT_m4CgCg&zoom=1&iact=rc&dur=328&sig=102787668848020487930&page=1&tbnh=146&tbnw=96&start=0&ved=1t:429,r:0,s:0,i:68&tx=50&ty=65" style="height: 146px;
------
Пока написал забор первой картинки, но код мне не нравится. Хотелось бы получать массив URL картинок и потом, если первая не грузится или не имеет расширения - пробовать вторую и т.д.
Мой код, который не нравиться:
PHP:
$key_kartinki='Кот Баюн';
$url = 'http://www.google.com/search?q=' . urlencode($key_kartinki) . '&oe=utf-8&rls={moz:distributionID}:{moz:locale}:{moz:official}&client=firefox-a&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&hl=en&tab=wi&sa=N&start=0&ndsp=20';
$naсhalo_k="imgurl=";
$strlen_naсhalo_k=strlen($naсhalo_k);
$konec_k="&";
$google_stranica=file_get_contents($url);
// обрежем начало
$pos = strpos($google_stranica, $naсhalo_k); // позиция подстроки в строке
if ($pos === false) {
echo 'Подстрока не найдена, значит ошибка';
}
else{
// обрежем лишнее с начала
$pos=$pos+$strlen_naсhalo_k;
$google_stranica=substr($google_stranica,$pos);
}
// обрежем с конца строки
$pos = strpos($google_stranica, $konec_k); // позиция подстроки в строке
if ($pos === false) {
echo 'Подстрока не найдена, значит ошибка';
}
else{
// обрежем лишнее с конца строки
$dlinnastroki=strlen($google_stranica);
$skonca=$dlinnastroki-$pos;
$google_stranica=substr($google_stranica,0,-$skonca);
}
$url_kartinki=$google_stranica;
echo "<br> <br> наша картинка - ".$url_kartinki;
Этот код забирает только первую картинку, и если она мне не подходит (битая) то всё, приплыли.