Hi zusammen,
ich hab vor ner ganzen Weile mit Python und Webscraping angefangen, weil ich im Syllabus meiner Hochschule ne Menge Daten hatte, die man nicht einfach runterladen konnte, die ich aber immer wieder gebraucht habe. Also hab ich angefangen die mit Python, Selenium/Webdriver und/oder BS4 zu extrahieren.
Seit dem fand ich das Thema sehr nützlich und hab immer wieder Daten mit Python ausgelesen und ausgewertet, oft mit Panda.
Ich wollte jetzt gern von Selenium/Webdriver umsteigen auf Scrapy, einfach weil Selenium doch gern an seine Grenzen stößt. Letztlich ist das ja nicht zum Webscraping gemacht, sondern primär um den Browser zu automatisieren und Webseiten zu testen.
Das größte Problem, was ich aktuell immer wieder habe, ist dass viele Inhalte ja dynamisch geladen werden.
Dazu gib es bei Scrapy auch ein ziemlich umfangreiches Doc:
https://docs.scrapy.org/en/latest/topics/dynamic-content.html
Letztlich ist die Best Practice Lösung aber die Datenquelle zu finden und den entsprechenden Request nachzubilden. Alternativ könnte man auch Spash als Javascript Renderer dazwischen schalten, aber ich hab gestern mal in die Docs von Slpash reingelesen und das ist für sich schon wieder ein Fass ohne Boden....
Ich würde also gern erst mal schauen, ob ich die Requests rausfinden und nachbauen kann. Ich hab dazu schon zahlreiche Tutorials gelesen und auf Youtube abgeschaut heute, aber wenn ich dass dann mal auf einer entsrechenden Webseite probieren will, finde ich ums Verrecken nicht den entsprechenden Request.
Ich war z.B. einfach mal auf ebay, hab nach Ford Mustang gesucht und geschaut was es so für Requests gibt.
Habe aber ewig nichts gefunden. Ich hab also aus Interesse mal JavaScript gesperrt und die Inhalte wurden dennoch geladen.
Ich würde also mal vermuten Ebay lädt also die Daten nicht über XHR/JSON nach, sondern liefert anscheinend fertig gebaute HTML Seiten aus?
Ich war dann mal auf de Seite hier:
https://www.thegrandwhiskyauction.com/past-auctions/q-yamazaki
(Mein Dad wird dieses Jahr 60 und ich such noch was schönes für ihn )
Mit ausgeschaltetem Javascript werden keine Inhalte geladen - schon mal gut.
Habe dann JavaScript aktiviert, die Seite geladen (Geschwindigkeit gedrosselt) und im Netzwerktab vom Browser genau geschaut, ab wann die relevanten Daten (Also Preis etc.) sichtbar werden. Habe dann pausiert und alle möglichen Requests angeschaut
Da sind eine Menge Get Requests. Ich habe entsprechend den Response-Payload angesehen, aber da war nirgends etwas, was die gesuchten Daten enthalten hat.
Ich habe dann stupide mal auch die ganzen Dateien angesehen, die geladen wurden, evtl verstecken sich die Inhalte ja in einer JS Variablen, aber auch da war nix.
Ich hab das Spiel dann noch bei ein paar anderen Webseiten weiter gemacht, aber habe egtl fast nie wirklich den entsprechenden Request finden können.
Lediglich bei https://www.sothebys.com/en/search?query=macallan&tab=objects&p=2
habe ich im Netzwerk Tab unter XHR entsprechende Daten finden können, wie es in den Tutorials immer hieß.
Vielleicht kann mir jemand mal ein paar Tipps geben, wie man besser herausfinden kann, aus welchem Request bestimmte Daten, die im Browser angezeigt werden, letztlich stammen?
VG
Tony
ich hab vor ner ganzen Weile mit Python und Webscraping angefangen, weil ich im Syllabus meiner Hochschule ne Menge Daten hatte, die man nicht einfach runterladen konnte, die ich aber immer wieder gebraucht habe. Also hab ich angefangen die mit Python, Selenium/Webdriver und/oder BS4 zu extrahieren.
Seit dem fand ich das Thema sehr nützlich und hab immer wieder Daten mit Python ausgelesen und ausgewertet, oft mit Panda.
Ich wollte jetzt gern von Selenium/Webdriver umsteigen auf Scrapy, einfach weil Selenium doch gern an seine Grenzen stößt. Letztlich ist das ja nicht zum Webscraping gemacht, sondern primär um den Browser zu automatisieren und Webseiten zu testen.
Das größte Problem, was ich aktuell immer wieder habe, ist dass viele Inhalte ja dynamisch geladen werden.
Dazu gib es bei Scrapy auch ein ziemlich umfangreiches Doc:
https://docs.scrapy.org/en/latest/topics/dynamic-content.html
Letztlich ist die Best Practice Lösung aber die Datenquelle zu finden und den entsprechenden Request nachzubilden. Alternativ könnte man auch Spash als Javascript Renderer dazwischen schalten, aber ich hab gestern mal in die Docs von Slpash reingelesen und das ist für sich schon wieder ein Fass ohne Boden....
Ich würde also gern erst mal schauen, ob ich die Requests rausfinden und nachbauen kann. Ich hab dazu schon zahlreiche Tutorials gelesen und auf Youtube abgeschaut heute, aber wenn ich dass dann mal auf einer entsrechenden Webseite probieren will, finde ich ums Verrecken nicht den entsprechenden Request.
Ich war z.B. einfach mal auf ebay, hab nach Ford Mustang gesucht und geschaut was es so für Requests gibt.
Habe aber ewig nichts gefunden. Ich hab also aus Interesse mal JavaScript gesperrt und die Inhalte wurden dennoch geladen.
Ich würde also mal vermuten Ebay lädt also die Daten nicht über XHR/JSON nach, sondern liefert anscheinend fertig gebaute HTML Seiten aus?
Ich war dann mal auf de Seite hier:
https://www.thegrandwhiskyauction.com/past-auctions/q-yamazaki
(Mein Dad wird dieses Jahr 60 und ich such noch was schönes für ihn )
Mit ausgeschaltetem Javascript werden keine Inhalte geladen - schon mal gut.
Habe dann JavaScript aktiviert, die Seite geladen (Geschwindigkeit gedrosselt) und im Netzwerktab vom Browser genau geschaut, ab wann die relevanten Daten (Also Preis etc.) sichtbar werden. Habe dann pausiert und alle möglichen Requests angeschaut
Da sind eine Menge Get Requests. Ich habe entsprechend den Response-Payload angesehen, aber da war nirgends etwas, was die gesuchten Daten enthalten hat.
Ich habe dann stupide mal auch die ganzen Dateien angesehen, die geladen wurden, evtl verstecken sich die Inhalte ja in einer JS Variablen, aber auch da war nix.
Ich hab das Spiel dann noch bei ein paar anderen Webseiten weiter gemacht, aber habe egtl fast nie wirklich den entsprechenden Request finden können.
Lediglich bei https://www.sothebys.com/en/search?query=macallan&tab=objects&p=2
habe ich im Netzwerk Tab unter XHR entsprechende Daten finden können, wie es in den Tutorials immer hieß.
Vielleicht kann mir jemand mal ein paar Tipps geben, wie man besser herausfinden kann, aus welchem Request bestimmte Daten, die im Browser angezeigt werden, letztlich stammen?
VG
Tony