Extrahieren Sie Daten von der Website über PHP

7

Ich versuche, eine einfache Alert-App für einige Freunde zu erstellen.

Grundsätzlich möchte ich Daten "Preis" und "Lagerverfügbarkeit" von einer Webseite wie die folgenden zwei extrahieren können:

Ich habe die Warnung per E-Mail und SMS-Teil gemacht, aber jetzt möchte ich in der Lage sein, die Menge und den Preis der Webseiten (dieser oder anderer) zu ermitteln, damit ich den Preis und die verfügbare Menge vergleichen kann und warnt uns, eine Bestellung aufzugeben, wenn ein Produkt zwischen einigen Schwellenwerten liegt.

Ich habe einige Regex ausprobiert (in einigen Tutorials gefunden, aber dafür habe ich einen Weg zu n00b), aber ich habe es nicht geschafft, dies zum Laufen zu bringen, irgendwelche guten Tipps oder Beispiele?

    
Mike 07.01.2010, 11:30
quelle

6 Antworten

29
%Vor%     
Matteo Riva 07.01.2010, 11:58
quelle
7

Es wird Screen Scraping genannt, falls Sie dafür googlen müssen.

Ich würde vorschlagen, dass Sie stattdessen einen dom-Parser und xpath-Ausdrücke verwenden. Feed den HTML-Code zuerst durch HtmlTidy, um sicherzustellen, dass es gültige Markup ist.

Zum Beispiel:

%Vor%     
troelskn 07.01.2010 12:01
quelle
5

Was immer Sie tun: Verwenden Sie keine regulären Ausdrücke zum Analysieren von HTML oder schlimme Dinge werden passieren . Verwenden Sie stattdessen einen Parser .

    
lutz 07.01.2010 11:33
quelle
2

1. geht diese Frage zu sehr ins Detail. Zweitens ist das Extrahieren von Daten von einer Website möglicherweise nicht legitim. Ich habe jedoch Hinweise:

  1. Verwenden Sie Firebug oder Chrome / Safari Inspector, um den HTML-Inhalt und das Muster interessanter Informationen zu erkunden

  2. Testen Sie Ihre RegEx, um zu sehen, ob die Übereinstimmung vorhanden ist. Sie müssen es möglicherweise mehrmals tun (Multi-Pass-Analyse / Extraktion)

  3. Schreiben Sie einen Client über cURL oder noch viel einfacher, verwenden Sie file_get_contents (HINWEIS, einige Hosts deaktivieren das Laden von URLs mit file_get_contents)

Für mich würde ich besser Tidy verwenden, um zu gültigem XHTML zu konvertieren, und dann XPath verwenden, um Daten anstelle von RegEx zu extrahieren. Warum? Weil XHTML nicht regulär ist und XPath sehr flexibel ist. Sie können XSLT lernen, um zu transformieren.

Viel Glück!

    
Viet 07.01.2010 11:43
quelle
2

Sie laden den HTML-Code wahrscheinlich am besten in einen DOM-Parser wie diesen und Suche nach der "Preis" -Tabelle. Jede Art von Scraping, die Sie tun können, kann jedoch brechen, wenn sie ihr Seitenlayout ändert, und ist wahrscheinlich ohne ihre Zustimmung illegal.

Der beste Weg wäre jedoch, mit den Leuten zu sprechen, die die Site betreiben, und zu sehen, ob sie alternative, zuverlässigere Formen der Datenlieferung haben (Web-Services, RSS oder Datenbank-Exporte kommen mir in den Sinn). p>     

Pekka 웃 07.01.2010 11:37
quelle
0

Die einfachste Methode, Daten von der Website zu extrahieren. Ich habe analysiert, dass alle meine Daten nur innerhalb des Tags enthalten sind, also habe ich diesen vorbereitet.

%Vor%     
user1764198 05.11.2012 16:31
quelle

Tags und Links