Suchmaschinenergebnisse in SQL-DB erfassen

teccrow

Grünschnabel
Hallo Community,

für statistische Auswertungen möchte ich gerne stündlich die Suchergebnisse von google, bing und ixquick für verschiedene Begriffe in einer SQL-DB erfassen, um darauf Grafiken usw. erstellen zu können. So eine Art Trendradar soll entstehen.

Nun habe ich bereits einige Versuche mit php (filegetcontents) und Javascript (getElementById) durchgeführt, die jedoch aus verschiedenen Gründen gescheitert sind. In GoogleDocs kann ich diese Abfragen mit dem Befehl "importxml" durchführen. Aber ich möchte die Werte ja direkt in eine SQL schreiben und nicht manuell.

Mich würde interessieren, auf welche Weise ihr diese Anforderung angehen würdet und bin sehr gespannt.

Danke im Voraus.
 

Yaslaw

alter Rempler
Moderator
Ich würde mir das xml anschauen. Dann über PHP oder sonstwas das XML parsen und in ein INSERT wandeln.

Ich kenne das XML aber nicht.
 

teccrow

Grünschnabel
Hm, irgendwie passt die Antwort nicht zu meiner Frage. Sicher mein Fehler :-( Versuche eine bessere Erläuterung.

Ich gebe einen Suchbegriff bei google.de ein, z.B. "Fussball". Dann bekomme ich folgende Ergebnissseite Link.

Ich möchte automatisch über ein Script, welches in einem bestimmten Intervall läuft, den Inhalt der ID "resultStats", also die Anzahl der Ergebnisse auslesen und in eine SQL-DB schreiben.

Das Gleiche möchte ich mit den Suchmaschinen Bing und Ixquick tun.

Meine erste Idee war, das DOM über JS auszulesen, dort stolpere ich aber über die "X-Frame-Options".

Meine zweite Idee war, über php und die Funktion "file_get_Contents", aber ich bin mir nicht sicher, ob dies der richtige Weg ist.

Daher die Frage an die Community, welchen Weg ihr einschlagen würdet.
 

teccrow

Grünschnabel
Ich habe nun ein wenig getestet und probiert! Für Google.de und Bing.com funktioniert die folgende Funktion (die Variable $link ist natürlich eine andere):

PHP:
function suche ($suche){
	$cacheDatei = 'tmp_ixquick_' . $suche . '.html';
	$link = 'https://ixquick.com/do/search?cmd=process_search&query=%22' . $suche . '%22';
	$cache = getCurlInfo($link);
	file_put_contents($cacheDatei, $cache);

	$dom= new DOMDocument();
	@$dom->loadHTMLFile($cacheDatei);
	$data = $dom->getElementById("results_count_p");
	$str =  ($data->nodeValue);
	$pattern = array ('/Ergebnisse/' , '/Ungefähr/' , '/[\x{0020}]+/u' , '/[\x{002e}]+/u');
	$str = preg_replace($pattern, '', $str); //ersetzt Zeichen im String
	return $str;
}

Bei der Suchmaschine Ixquick habe ich dass Problem, dass es mit dieser Funktion nicht zulässt die HTML-Seite lokal zu speichern. Auch das DOM direkt zu laden klappt nicht. Statt dessen wird eine Hinweisseite geladen, die darauf hinweist, dass man Bots, Spammer usw. zulässt.

Gibt es noch eine andere Möglichkeit?