Google Bildersuche

moonwalker99

Lt. Commander
Registriert
Jan. 2008
Beiträge
1.930
Ich möchte aus der google Bildersuche die URLs der Bilder direkt auslesen. Im Quelltext finden sich aber nur die Links der ersten 100 Bilder. Wie komme ich an die URLs der anderen Bilder?

Die anderen Bilder lassen sich mit der Maus öffnen. Kann es sein, dass der Link evtl. mit JavaScript nachgeladen wird? Bin ein wenig ratlos.
 
Weitere Bilder werden erst beim Scrollen geladen, existieren direkt nach dem Aufruf also noch nicht.
 
  • Gefällt mir
Reaktionen: cyberpirate
Wie liest du die URLs aus? Wenn es z.B. mit Python + Selenium ist, dann kannst du ja versuchen via Code zu scrollen und so das erneute Laden von weiteren Bildern zu erzwingen.
 
OK, habe mich missverständlich ausgedrückt. Also nochmal: ich gebe folgendes in die Bildersuche ein:

https://www.google.de/search?q=aeroplane &tbm=isch&hl=de&safe=images&tbs=qdr:w,isz:lt,islt:8mp

Ich scrolle manuell ganz nach unten bis zum Ende und habe somit 809 Treffer. Die URLs zu den 100 Bildern stehen ganz unten im HTML-Code, in der Zeile, wo auch die JavaScript-Funktion AF_initDataCallback vorhanden ist.

Ich frage mich, wie ich an die URLs der 809 Bilder komme. Würde notfalls auch mit python oder node.js arbeiten.
 
F12 drücken, das hier in die Konsole eingeben und Enter.

Code:
var elements = document.getElementsByClassName("islrc")[0];
for (let element of elements.children) {
    console.log(element.getElementsByTagName("img")[0]?.src);
}
 
Der Link zu den richtigen Bildern wird erst beim Klick auf das Vorschaubild geladen. Das heißt für dein Vorhaben müsstest du zunächst alle Bilder anklicken.

Code:
var elements = document.getElementsByClassName("islrc")[0].children;
var count = 0;
var iv = setInterval(function() {
    elements[count++].getElementsByTagName("a")[0]?.click();
    if (count === elements.length) {clearInterval(iv); console.log("done");}
}, 1000);
Dieses Script klickt sich durch alle Bilder durch (je eines pro Sekunde, die letzte Zahl unten ist die Wartezeit).
Das Problem ist jedoch, dass Google das nicht zu mögen scheint. Nach einer Weile wird die Seite einfach automatisch neu geladen.
Vielleicht klappt es mit einer höheren Wartezeit zwischen den Bildern. Besser wäre nachzuvollziehen woher Google die Infos lädt und genau dort anzufragen, ist aber etwas Zeitaufwändiger.

Danach kannst du dir hiermit alle Links ausgeben:
Code:
var elements = document.getElementsByClassName("islrc")[0].children;
for (let element of elements) {
    try { console.log((element.getElementsByTagName("a")[0]?.href||"").split("imgurl=")[1].split("&")[0].split("%3A").join(":").split("%2F").join("/")); } catch{}
}
 
Zurück
Oben