Ich bin relativ häufig auf eBay nach Artikeln in meiner Umgebung am suchen und das in mehreren Kategorien, irgendwann hat es mich genervt, jedes mal, in jeder Kategorie nach Artikeln in x km Umgebung für max. x Euro zu suchen. Also schrieb ich mir eine Art kleinen Crawler, welcher jeweils die erste Seite, des Suchergebnisses, in einer bestimmten Umgebung zusammenführt und in einer Liste ausgibt.

Die URL dafür herauszufinden war nicht allzuschwer, dann ging es an die HTML Quelle auf der Suche nach einem Muster, welches sich für jeden Artikel wiederholt, als ich es fand, machte ich mich daran, die HTML Quelle per PREG_MATCH_ALL zu durchforsten. Den Pattern dazu möchte ich hier kurz Vorstellen.

Ich bin mir sicher, dass es auch anders und kürzer geht, deswegen sei gesagt, dass ich erst vor Kurzem angefangen habe, mich mit Regex zu beschäftigen. Kann ich übrigens jedem Empfehlen!

$pattern = ' 
'; $pattern .= '(.*)
(.*)(.*)
(.*)'; if(preg_match_all("/$pattern/U", $htmlsource, $matches){ $products[] = array( "cat" => $cat, "img" => $match[1], "url" => $match[2], "name" => $match[3], "bids" => $match[4], "price" => $match[5], "shipping" => $match[6], "time" => $match[7] ); }

Erklärung der einzelnen Expressions:
[^\"]* -> beliebige Zeichen, außer “, der Stern sagt: beliebige Anzahl, auch keine
.* -> beliebiges Zeichen in beliebiger Anzahl
([^\"]*) und (.*) -> die Klammern besagen, dass es sich hierbei um ein “Match” handelt, es wird also in das $matches Array aufgenommen

Bin jederzeit für Verbesserungsvorschläge offen, falls jemand den Pattern verbessern will.

Hinterlasse einen Kommentar.

Network-wide options by YD - Freelance Wordpress Developer