как получить изображения Google - PullRequest
4 голосов
/ 12 февраля 2011

Я хочу получать изображения Google по любому запросу. Я прошел API поиска изображений Google, но не могу понять. Я также видел некоторые методы, они выбирают изображения, но только с первой страницы. Я использовал следующий метод.

function getGoogleImg($k)
{
    $url = "http://images.google.it/images?as_q=##query##&hl=it&imgtbs=z&btnG=Cerca+con+Google&as_epq=&as_oq=&as_eq=&imgtype=&imgsz=m&imgw=&imgh=&imgar=&as_filetype=&imgc=&as_sitesearch=&as_rights=&safe=images&as_st=y";
    $web_page = file_get_contents( str_replace("##query##",urlencode($k), $url ));
    $tieni = stristr($web_page,"dyn.setResults(");
    $tieni = str_replace( "dyn.setResults(","", str_replace(stristr($tieni,");"),"",$tieni) );
    $tieni = str_replace("[]","",$tieni);
    $m = preg_split("/[\[\]]/",$tieni);
    $x = array();
    for($i=0;$i<count($m);$i++)
    {
        $m[$i] = str_replace("/imgres?imgurl\\x3d","",$m[$i]);
        $m[$i] = str_replace(stristr($m[$i],"\\x26imgrefurl"),"",$m[$i]);
        $m[$i] = preg_replace("/^\"/i","",$m[$i]);
        $m[$i] = preg_replace("/^,/i","",$m[$i]);
        if ($m[$i]!="")
        array_push($x,$m[$i]);
   }
   return $x;
}

Эта функция возвращает только 21 изображение. Я хочу, чтобы все изображения соответствовали этому запросу. я делаю это в php

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

К сожалению, API изображений закрывается, поэтому я не буду предлагать переходить к этому, но я думаю, что это было бы более хорошим решением.

Мое лучшее предположение, что изображение 22 и вперед загружается с использованиемsom ajax / javascript некоторого вида (если вы ищете, скажем, логотип и прокрутите вниз, вы увидите заполнители, которые загружаются при перемещении вниз), и что вам нужно пропустить страницу с помощью движка javascript, и это не то, что я могу найтилюбой, кто сделал с php (пока).Вы проверили, что $ web_page содержит более 21 изображения (когда я играю против поиска картинок Google, он использует javascript для загрузки некоторых изображений)?Когда вы получаете доступ к ссылке из обычного браузера, что происходит тогда и что происходит, если вы отключаете JavaScript?Может быть, есть ссылка на следующую страницу в результатах, которые у вас есть?

В устаревшем теперь API изображения были способы ограничить количество результатов на страницу и перейти на следующую страницу https://developers.google.com/image-search/v1/jsondevguide#json_snippets_php

Если вы хотите продолжать выполнять поиск и извлекать изображения из результатов поиска, то для дальнейшего использования http://simplehtmldom.sourceforge.net/ может быть хорошей альтернативой.Он извлекает HTML DOM и позволяет легко находить узлы и упрощает работу с ними.Но он по-прежнему использует библиотеки file_get_contents или curl для извлечения данных, поэтому для работы javascript, возможно, потребуется немного поиграться.

1 голос
/ 03 августа 2016

Я написал скрипт для загрузки изображений из Google Search Search, который в настоящее время загружает 100 оригинальных изображений

оригинальный скрипт, который я написал в ответе stackoverflow

Python - Загрузка изображений из GoogleПоиск изображений?

, которые я подробно объясню, как я собираю ссылки на оригинальные изображения из Google. Поиск изображений с помощью urllib2 и BeautifulSoup

, например, если вы хотите очистить изображения фильматерминатор 3 из поиска картинок Google

query= "Terminator 3"
query=  '+'.join(query.split())  #this will make the query terminator+3
url="https://www.google.co.in/search?q="+query+"&source=lnms&tbm=isch"
header={'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36"
}
req = urllib2.Request(url,headers=header)
soup= urllib2.urlopen(req)
soup = BeautifulSoup(soup)

переменная суп выше содержит HTML-код запрашиваемой страницы, теперь нам нужно извлечь изображения, для этого вам нужно открыть веб-страницу в вашем браузере и и сделатьосмотрите элемент на изображении

здесь вы найдете теги, содержащие изображение URL

например для изображения Google я нашел "div", {"class": "rg_meta"}содержащий ссылку на изображение

, вы можете выполнить поиск по документации BeautifulSoup

print soup.find_all("div",{"class":"rg_meta"})

u получите списокрезультаты как

<div class="rg_meta">{"cl":3,"cr":3,"ct":12,"id":"C0s-rtOZqcJOvM:","isu":"emuparadise.me","itg":false,"ity":"jpg","oh":540,"ou":"http://199.101.98.242/media/images/66433-Terminator_3_The_Redemption-1.jpg","ow":960,"pt":"Terminator 3 The Redemption ISO \\u0026lt; GCN ISOs | Emuparadise","rid":"VJSwsesuO1s1UM","ru":"http://www.emuparadise.me/Nintendo_Gamecube_ISOs/Terminator_3_The_Redemption/66433","s":"Screenshot Thumbnail / Media File 1 for Terminator 3 The Redemption","th":168,"tu":"https://encrypted-tbn2.gstatic.com/images?q\\u003dtbn:ANd9GcRs8dp-ojc4BmP1PONsXlvscfIl58k9hpu6aWlGV_WwJ33A26jaIw","tw":300}</div>

приведенный выше результат содержит ссылку на наш URL-адрес изображения

http://199.101.98.242/media/images/66433-Terminator_3_The_Redemption-1.jpg

вы можете извлечь эти ссылки и изображения следующим образом

ActualImages=[]# contains the link for Large original images, type of  image
for a in soup.find_all("div",{"class":"rg_meta"}):
    link , Type =json.loads(a.text)["ou"]  ,json.loads(a.text)["ity"]
    ActualImages.append((link,Type))

for i , (img , Type) in enumerate( ActualImages):
    try:
        req = urllib2.Request(img, headers={'User-Agent' : header})
        raw_img = urllib2.urlopen(req).read()
        if not os.path.exists(DIR):
            os.mkdir(DIR)
        cntr = len([i for i in os.listdir(DIR) if image_type in i]) + 1
        print cntr
        if len(Type)==0:
            f = open(DIR + image_type + "_"+ str(cntr)+".jpg", 'wb')
        else :
            f = open(DIR + image_type + "_"+ str(cntr)+"."+Type, 'wb')


        f.write(raw_img)
        f.close()
    except Exception as e:
        print "could not load : "+img
        print e

вуаляВы можете использовать этот скрипт для загрузки изображений из поиска Google

или для сбора обучающих изображений

. Для полностью работающего скрипта вы можете получить его здесь

https://gist.github.com/rishabhsixfeet/8ff479de9d19549d5c2d8bfc14af9b88

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...