2010-12-01 9 views
5

Ich versuche, die Menge der Artikel eines meiner Händler auf Lager pro Produkt zu kratzen. Sie können diese Daten nicht exportieren. Ich frage mich also, ob jemand mir helfen könnte, in die richtige Richtung zu zeigen, wie man eine Seite mit PHP scrappen kann, auf der man sich anmelden muss, um zu den Daten zu gelangen? Es ist keine sichere Seite mit SSL.PHP Site Scraping mit einem sicheren Login

Vielen Dank für alle Tipps,

Chris Edwards

+1

Sie müssen weitere Details zur Anmeldung angeben, z. B. grundlegende Zugriffsauthentifizierung, oder? – ajreal

Antwort

12

Der einfachste Weg zu bekommen, wo Sie durch die Verwendung von cURL wollen. cURLs Basisfunktion besteht darin, dass Sie eine HTTP-Anfrage so konfigurieren können, wie Sie sie benötigen und die Antwort erhalten. Dies kann in verschiedenen Graden von Details erfolgen, abhängig von Ihren Bedürfnissen.

Was Sie tun möchten, ist im Wesentlichen eine HTTP-Anfrage, um die gewünschte Seite zu erhalten und die Daten aus der Antwort HTML zu kratzen. Dies kann sehr einfach sein, aber in Ihrem Fall müssen Sie einige Hindernisse überwinden.

Ich gehe davon aus, dass Sie mit "Ich muss einloggen" meinen, dass es ein Login-Formular gibt, das Sie hinter sich bringen müssen, bevor Sie etwas kratzen können. cURL kann mit ein wenig Hilfe Ihrerseits einen Login fälschen.

Zunächst müssen Sie das Anmeldeformular mit cURL "senden", so wie Sie es von Hand tun würden. Um sicherzugehen, dass Sie es richtig verstanden haben, müssen Sie die HTTP-Anfragen Ihres Browsers sehen, wenn Sie das Formular von Hand einreichen und identische Anfragen mit cURL erstellen. Um die HTTP-Anfragen im Detail zu sehen, können Sie Firebug, Chrome's Developer Tools oder die absolut fantastischeFiddler debugging proxy verwenden.

Höchstwahrscheinlich sendet Ihnen der Server nach dem Einreichen eines gültigen Anmeldeformulars einen Cookie, der bei der Authentifizierung bei nachfolgenden Anfragen verwendet wird. Dieser Cookie ist Teil der Header der HTTP-Antwort des Servers (Set-Cookie header). Sie müssen sich den Wert dieses Cookies merken und einen Header Cookie bei nachfolgenden Scrapes zum Server hinzufügen - im Wesentlichen tun Sie genau das, was Ihr Browser tun würde, wenn Sie eingeloggt wären ** ¹ **.

Und schließlich müssen Sie möglicherweise mehr als einen Hin- und Rückflug machen, um Ihr Ziel zu finden. Vielleicht ist die URL, die Sie scrappen müssen, vorher nicht bekannt, und Sie müssen eine "Listen" -Seite scrappen, um einen variablen Teil der URL zu finden, die Sie scrappen möchten. Dies kann gelöst werden, indem man das Problem in mehreren Schritten anpackt: Zuerst die Seite "Liste" abkratzen, herausfinden, was man braucht, dann die Seite "Details" abkratzen, die man wirklich will.

Ich stelle keinen Code zur Verfügung, da es im Web viele Tutorials zu cURL gibt, aber ich glaube, dass es viel einfacher ist, zu wissen, was der Plan ist.


¹ Eine andere Art und Weise (schneller, aber roh) diese in sich selbst, indem Sie einfach die Anmeldung ist zu gehen um zu tun, um den Wert des Cookies zu sehen, du hast, und Einfügen nur, dass in Anfrage Ihre schaben ist. Der Vorteil ist, dass Sie kein Login mehr mit cURL fälschen müssen. Der Nachteil besteht darin, dass sich jeder Benutzer vor jeder Verwendung des Tools manuell anmelden und dem Tool die Anmeldeinformationen bereitstellen muss.

1

es eine Bibliothek namens curl Sie in sie

link

es Ihrem Skript verwenden Cookies/Sitzungen anmelden können aussehen sollte und scrape den Inhalt von jeder der Seiten, die es folgt, können Sie einstellen, wie tief es gehen sollte und ob es irgendwelche Umleitungen etc. folgen sollte Sie konnten es sogar verwenden, um Daten zu senden. Es ist im Grunde ein großartiges Werkzeug.

Hier ist auch ein Link zu einem Tutorial, in dem Sie Schritt für Schritt sehen, wie es funktioniert

http://devzone.zend.com/article/1081

+0

-1. Obwohl dies formal korrekt ist, hilft ihm das nicht weiter. Nur "X benutzen" zu sagen, ist keine gute Antwort. – user187291

+0

Ich habe einen Link zu ihrer Website zur Verfügung gestellt, wo gibt es Dokumentation über die Verwendung der Bibliothek zusammen mit PHP und er sagte Tipp nicht geben mir eine Funktion, die alles tut, was ich will. – Breezer