2011-02-12 3 views
3

Je veux aller chercher des images google pour toute requête. Je suis passé par l'API de recherche d'image google mais incapable de comprendre. J'ai également vu quelques méthodes, ils récupèrent des images mais seulement de première page. J'ai utilisé la méthode suivante.comment aller chercher des images 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; 
} 

Cette fonction retourne seulement 21 images. Je veux toutes les images contre cette requête. Je le fais en php

+0

Avez-vous déjà vu un Google -résultation qui vous donne tous (peut être des millions) des résultats? Cependant, il vaut mieux utiliser l'image-search-api: http://code.google.com/intl/de/apis/imagesearch/ –

+0

Oui Dr.Mollie. Mais quand il revient, il n'en renvoie que quelques-uns. Pas tout. Comme nous ne pouvons pas supprimer les images google. –

+0

montrez-moi un de ces résultats avec tous les résultats (bien sûr avec plus de 20 images) –

Répondre

1

Malheureusement, l'API d'image est en cours de fermeture, donc je ne vais pas suggérer de passer à cela, mais cela aurait été une meilleure solution, je pense.

Ma meilleure estimation est que l'image 22 et les avants sont chargés en utilisant som ajax/javascript de quelque sorte (si vous recherchez le logo et défiler vers le bas, vous verrez les espaces réservés qui se charge lorsque vous descendez) et que vous avez besoin passer la page par un moteur de Javascript et ce n'est pas quelque chose que je peux trouver n'importe qui qui a fait avec php (encore). Avez-vous vérifié que $ web_page contient plus de 21 images (lorsque je joue avec google image search, il utilise javascript pour charger certaines images)? Lorsque vous accédez au lien depuis votre navigateur normal, que se passe-t-il alors et que se passe-t-il si vous désactivez javascript? Y at-il peut-être un lien vers la page suivante dans le résultat que vous avez?

Dans l'API Image maintenant dépréciée il y avait des moyens de limiter le nombre de résultats par page et les moyens de passer à la page suivante https://developers.google.com/image-search/v1/jsondevguide#json_snippets_php

Si vous souhaitez continuer à faire des recherches et aller chercher des images à partir du résultat de recherche, puis pour plus tard http://simplehtmldom.sourceforge.net/ pourrait être une bonne alternative à regarder. Il récupère un DOM html et vous permet de trouver facilement des nœuds et facilite le travail avec eux. Mais il utilise toujours les bibliothèques file_get_contents ou curl pour récupérer les données, ce qui peut nécessiter quelques manipulations pour que JavaScript fonctionne.

1

j'ai écrit un script pour télécharger des images Formulaire de recherche d'image Google que je téléchargement actuellement 100 images originales

le script d'origine je l'ai écrit sur stackoverflow réponse

Python - Download Images from google Image search?

que je vais vous expliquer en détail comment Je suis l'URL de grattage des images originales de la recherche d'image de Google en utilisant urllib2 et BeautifulSoup

par exemple si vous voulez gratter des images de terminateur de film 3 fro m soupe variable de l'image de la recherche 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) 

contient au-dessus du code HTML de la page qui est demandé maintenant nous avons besoin d'extraire les images pour que u doivent ouvrir la page Web dans votre navigateur et et n'inspectez élément sur la l'image

vous trouverez ici les étiquettes contenant l'image de l'url

par exemple pour google image je l'ai trouvé "div", { "class": "rg_meta"} contenant le lien vers l'image

vous pouvez rechercher le doccummen BeautifulSoup mise en

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

u obtenir une liste des résultats que

<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> 

le résultat ci-dessus contient un lien vers notre URL de l'image

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

u peut extraire ces liens et images comme suit

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 

le tour est joué maintenant u peut utiliser ce script pour télécharger des images de google recherche

ou de recueillir des images de formation

pour le script entièrement fonctionnel, vous pouvez l'obtenir ici

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

Questions connexes