Hallo Leute,
ich stell mich mal eben kurz vor. Ich bin 28 Jahre alt und gerade fertig mit meinem M.Sc Mechatronik. Seit kurzem befasse ich mich mit Python und DataScience, Neuronale Netze, Machinen Learning etc.
Für einen Kumpel soll ich nun folgendes realisieren.
Er möchte in seinem eigenen Ebay-Account die Daten von seinen Verkäufen haben. Anschrift, Preis des Produktes, Datum und alles was so möglich ist und was er möchte.
Ich bin super frisch im crawler/scraping. Naja generell in der kompletten Sprache Python. Ich arbeite erstmal mit JupyterNotebook. Ich schaffe es eine beliebe öffentliche Anzeige auf Ebay anzusteuern und dort den Preis zu extrahieren. Nun möchte ich das selbe mit den Verkäufen machen. Dazu muss man ja eine Website zu crawlen die hinter einem LogIn steht. Ich bekomme sobald ich die URL von meinem MyEbay ansteuern möchte den Fehler 405. Denke, dass ist weil ich die Seite nicht ohne Authentisierung crawlen darf.
Aktuell ist mein Code um eine öffentliche Anzeige zu crawlen sehr übersichtlich:
import requests
from bs4 import BeautifulSoup
r = requests.get("https://www.ebay.de/itm/RAMPS-1-6-Plus-Shield-f") // Habe die URL mal abgekürzt
print(r)
antwort: Response 200 // also die Seite kann aufgerufen und gecrawlt werden. Was auch soweit funktioniert.
Wie sieht das nun mit einer Seite hinter einem Login aus? Im Internet sind viele Ansätze die ich aber nicht nachvollziehen kann.
Ich muss erst die LogIn-Seite anfragen und dort den Benutzername und Passwort per push() Befehl einfügen. Anschließend wäre es ja möglich die dahinterliegende Seite aufzurufen oder?
Ich hoffe ich konnte mein Problem erklären. Bitte den Thread verschieben falls es ein spezielles Forum dafür gibt!! Danke
MyEbay - crawler/scraping
Salut,
aus gegebenen Anlaß kann ich dir sicher mal eine kleine Richtung geben.. Aus Gründen habe ich zur Zeit auch ganz ordentlich mit eBay zu tun. Also..:
Um Angebote auf eBay zu erstellen, zu steuern oder sonstwie zu manipulieren, gibt es eine wahrlich umfangreiche API (ein erster Anlaufpunkt hier) von eBay selbst. Da dein Freund ja wohl einen eBay-Account hat, kann er dort einen Developer-Token beantragen, mit dem er/du dann die verschieden APIs auf eBay abfragen kann/st. Für Python gibt es da auch schon ein ganz schickes Paket: ebaysdk; das könnte dir schon mal ne Menge Aufwand mit requests ersparen (der kommt dann aber im Umgang mit den eBay-APIs..
).
Grüße ~
aus gegebenen Anlaß kann ich dir sicher mal eine kleine Richtung geben.. Aus Gründen habe ich zur Zeit auch ganz ordentlich mit eBay zu tun. Also..:
Um Angebote auf eBay zu erstellen, zu steuern oder sonstwie zu manipulieren, gibt es eine wahrlich umfangreiche API (ein erster Anlaufpunkt hier) von eBay selbst. Da dein Freund ja wohl einen eBay-Account hat, kann er dort einen Developer-Token beantragen, mit dem er/du dann die verschieden APIs auf eBay abfragen kann/st. Für Python gibt es da auch schon ein ganz schickes Paket: ebaysdk; das könnte dir schon mal ne Menge Aufwand mit requests ersparen (der kommt dann aber im Umgang mit den eBay-APIs..

Grüße ~
es gibt manche, die sind anders und andere, die sind genauso
Danke für die schnelle Antwort!
Ist das nicht möglich, erst die request der LogIn-Page und mit einem push() Befehl die Anmeldedaten anzugeben und anschließend die Seite dahinter zu crawlen? Ich schaue mir ein Videokurs dazu an aber dort werden nur freie Seiten gecrawlt. Mit dem API habe ich schon öfter gelesen aber auch wenn es umständlicher ist, ist es nicht möglich meinen Weg zu gehen, wie auch immer der heißt oder genannt wird?
Ist die Annahme überhaupt korrekt das ich bei einem 405Fehler nur kein Zugriff auf die Seite habe? Jede andere beliebige Seite die öffentlich ist funktioniert einwandfrei.
Mein Kollege sagt, dass er das vor ein paar Monaten noch mit einem schlichten Excelprogramm (Makro) erledigen konnte. Kann mir nicht vorstellen das er da sehr spezielle Techniken verwendet hat.
Gruß
Lameduq
Ist das nicht möglich, erst die request der LogIn-Page und mit einem push() Befehl die Anmeldedaten anzugeben und anschließend die Seite dahinter zu crawlen? Ich schaue mir ein Videokurs dazu an aber dort werden nur freie Seiten gecrawlt. Mit dem API habe ich schon öfter gelesen aber auch wenn es umständlicher ist, ist es nicht möglich meinen Weg zu gehen, wie auch immer der heißt oder genannt wird?
Ist die Annahme überhaupt korrekt das ich bei einem 405Fehler nur kein Zugriff auf die Seite habe? Jede andere beliebige Seite die öffentlich ist funktioniert einwandfrei.
Mein Kollege sagt, dass er das vor ein paar Monaten noch mit einem schlichten Excelprogramm (Makro) erledigen konnte. Kann mir nicht vorstellen das er da sehr spezielle Techniken verwendet hat.
Gruß
Lameduq
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@LameDuq: Der HTTP-Status 405 sagt erst einmal nichts über die Authentisierung, sondern das die Zugriffsmethode die Du da auf die URL anwenden willst, nicht erlaubt ist. Zum Beispiel weil die Login-URL vielleicht nur POST erlaubt, du aber vielleicht ein GET versuchst. In den Header-Daten der Antwort sollte es einen "Allow"-Header geben. Siehe auch https://developer.mozilla.org/en-US/doc ... Status/405
Die API zu benutzen ist nicht nur eine Frage ob das nun einfacher ist oder nicht, sondern das ist der offizielle Weg den der Anbieter natürlich bevorzugt. Im Gegensatz zu Crawlern die auch gerne mal aktiv technisch bekämpft werden, und damit unzuverlässiger sein können. Die müssen auch bei Änderungen an der Webseite angepasst werden, und je moderner und dynamischer die Seite wird, um so komplizierter kann das Crawlen werden.
Die API zu benutzen ist nicht nur eine Frage ob das nun einfacher ist oder nicht, sondern das ist der offizielle Weg den der Anbieter natürlich bevorzugt. Im Gegensatz zu Crawlern die auch gerne mal aktiv technisch bekämpft werden, und damit unzuverlässiger sein können. Die müssen auch bei Änderungen an der Webseite angepasst werden, und je moderner und dynamischer die Seite wird, um so komplizierter kann das Crawlen werden.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Du redest immer von „Push“. Was soll das sein? Es gibt Post, get & put als request Verben. Push habe ich noch nie gehört.
Und deine Einschätzung, es wäre einfacher über http, würde ich in Frage stellen. Eine API ist deutlich robuster. Die ändert sich zb nicht, nur weil gerade eine Layout Änderung eingeführt wurde. Und wie man sich authentifiziert ist auch klar vorgegeben.
405 klingt nach einem Programmierfehler. Könnte dieses ominöse push sein.
Und deine Einschätzung, es wäre einfacher über http, würde ich in Frage stellen. Eine API ist deutlich robuster. Die ändert sich zb nicht, nur weil gerade eine Layout Änderung eingeführt wurde. Und wie man sich authentifiziert ist auch klar vorgegeben.
405 klingt nach einem Programmierfehler. Könnte dieses ominöse push sein.