Extrahieren Sie Daten von der website via PHP
Ich bin versucht, zu erstellen eine einfache alert-app für einige Freunde.
Grundsätzlich möchte ich in der Lage sein, Daten zu extrahieren "Preis" und "Verfügbarkeit" von einer Webseite wie folgende zwei:
- http://www.sparkfun.com/commerce/product_info.php?products_id=5
- http://www.sparkfun.com/commerce/product_info.php?products_id=9279
Ich gemacht habe, die Warnmeldung über e-mail und sms-Teil, aber jetzt will ich in der Lage sein, um die Menge und den Preis aus den Seiten (2 oder andere sind), so dass ich kann vergleichen Sie den Preis und Menge zur Verfügung und informieren Sie uns um eine Bestellung zu machen, wenn ein Produkt zwischen einigen schwellen.
Habe ich versucht, einige regex (gefunden auf einige tutorials, aber ich habe einen Weg zu n00b für diese), aber haben es nicht geschafft, diese arbeiten, keine guten Tipps oder Beispiele?
- Sie könnten veröffentlichen, was Sie bisher ausprobiert haben....
- nicht verwenden reguläre Ausdrücke zum Parsen von HTML. Sie können nicht zuverlässig Parsen von HTML mit regulären Ausdrücken, und Sie wird das Gesicht von Kummer und Frust auf der Straße. Sobald die HTML-änderungen von Ihren Erwartungen, Ihren code gebrochen. Siehe htmlparsing.com/php für Beispiele, wie richtig analysiert HTML-mit PHP-Module, die bereits geschrieben wurden, getestet und debuggt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es nennt sich screen scraping, in Fall, dass Sie eine google für Sie.
Ich würde vorschlagen, dass Sie einen dom-parser und xpath-Ausdrücke statt. Füttern Sie die HTML durch HtmlTidy ersten, um sicherzustellen, dass es gültig ist markup.
Beispiel:
Was immer Sie tun: nicht verwenden reguläre Ausdrücke zum Parsen von HTML-oder schlimme Dinge werden passieren. Verwenden Sie eine parser statt.
1., diese Frage geht zu sehr in details. 2. extrahieren von Daten aus einer website nicht rechtmäßig sein könnte. Allerdings habe ich Hinweise:
Verwenden Firebug oder Chrome/Safari-Inspektors erkunden Sie die HTML-Inhalte und Muster interessante Informationen
Testen Sie Ihre RegEx um zu sehen, ob die übereinstimmen. Möglicherweise müssen Sie es tun, viele Male (multi-pass-parsing/- Extraktion)
Schreiben Sie einen client via cURL oder noch viel einfacher, verwenden file_get_contents (BEACHTEN Sie, dass einige hosting-deaktivieren laden von URLs mit file_get_contents)
Für mich, ich würde eine bessere Nutzung Sauber zu konvertieren, um valides XHTML zu verwenden und dann XPath, Daten zu extrahieren, anstatt RegEx. Warum? Denn XHTML ist nicht regelmäßig und XPath ist sehr flexibel. Sie können lernen, XSLT zu transformieren.
Glück!
Sind Sie wahrscheinlich am besten aus, dem laden der HTML-code in ein DOM-parser wie this one und der Suche nach der "Preise" - Tabelle. Jedoch, jede Art von Schaben, die Sie tun können brechen, wenn Sie ändern Ihre Seiten-layout, und ist wahrscheinlich illegal, ohne Ihre Zustimmung.
Der beste Weg, aber zu den Menschen sprechen, die auf der Website, und sehen, ob Sie alternative, verlässlichere Formen der Daten-Anlieferung (Web-services, RSS-Feeds, oder Datenbank-Exporte in den Sinn kommen).
Ist die einfachste Methode zum extrahieren von Daten von der Website. Ich habe analysiert, dass alle meine Daten erfasst-tag nur, damit ich vorbereitet habe diese.