[ERLEDIGT] Anzahl der Google Treffer per PHP auslesen

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Werbung

Jetzt auf elektrisches Fahren umstellen, Umwelt schonen und 1.500km kostenlosen Strom von Tesla bekommen. https://ts.la/carsten15473.

LukeDukem

Neues Mitglied
10 Juli 2019
3
0
1
47
Hallo zusammen.
Habe nun schon einiges per try&error ausprobiert, leider bisher ohne Erfolg, daher wende ich mich mal an euch.

Ich möchte für ein bestimmtes Wort per Script einen Teil der Google-Ergebnis-Seite auslesen, würde man danach googeln, und zwar lediglich die Anzahl der Treffer.
Bei Google steht dort in der betreffenden Zeile: Ungefähr 235.000 Ergebnisse (0,37 Sekunden)

Hat jemand eine Idee, die einfach umzusetzen wäre?
Die Google API scheint seit längerem nicht mehr zu funktionieren. Und möglicherweise will Google das ja auch gar nicht. Obwohl Googles Geschäftsmodell genau darauf basiert, andere Seiten zu grabben und auszulesen... aber das ist ein anderes Thema.

Ich würde mich freuen, wenn mir jemand hierbei helfen könnte.
Herzlichen Dank im Voraus :-)
 

LukeDukem

Neues Mitglied
10 Juli 2019
3
0
1
47

Aaron3219

Senior HTML'ler
6 Oktober 2015
1.054
204
63
18
Ich habe deshalb meine Antwort kurz vor deinem Post gelöscht gehabt.
 
Zuletzt bearbeitet:

Aaron3219

Senior HTML'ler
6 Oktober 2015
1.054
204
63
18
Also hier eine (getestete) funktionierende Lösung:
Ich schätze warum der sehr triviale Versuch von vorher nicht funktioniert hat scheint wohl zu sein, dass Google den User Agent checkt um automated queries zu verhindern.
Aus diesem Grund muss in diesem Falle cURL verwendet werden (was man ohnehin tun sollte). Es reicht allerdings nicht aus, einfach den Content der Seite auszulesen.

Wir müssen ein wenig tricksen um quasi vorzutäuschen, dass wir ein normaler Browser sind. Wir müssen also ein paar zusätzliche Optionen für den cURL-Transfer setzen (curl_setopt).

Alles in allem komme ich auf diese Lösung:
PHP:
<?php

$search_string = "Test";

$url = "https://www.google.com/search?q=".$search_string;
$agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36';

$c = curl_init();

curl_setopt($c, CURLOPT_VERBOSE, true);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_URL,$url);
curl_setopt($c, CURLOPT_USERAGENT, $agent);

$result = curl_exec($c);

preg_match('/<div id="resultStats">.*?([0-9\.\,]+).*?<\/div>/', $result, $matches);

echo $matches[1];
Vorgefertigte Lösung... das schreit quasi nach copy & paste. Stell dir also die Frage, wie viel es dir bringen würde etwas zu kopieren, was dir keinen Lerneffekt bringt.
Mein Appell an dich: Beschäftige dich mit dem Code, frage bei Fragen nach und versuche ihn vollständig zu verstehen. Glaube mir, es bringt dich deutlich weiter als einfach blind alles zu übernehmen.
 
Zuletzt bearbeitet:

LukeDukem

Neues Mitglied
10 Juli 2019
3
0
1
47
Ich folge zunächst dem Schrei... copy&paste... und es funktioniert grandios! :D
Vielen herzlichen Dank für deinen Einsatz!!
Ich lerne gerne dazu, werde deinem Rat folgen und versuchen, den Code nachzuvollziehen.

Wenn du dir das Ergebnis anschauen möchtest: https://wortgenerator.de
 
Werbung: