2017-03-13 5 views
0

Ich bin gerade in Python und habe hauptsächlich mit BeautifulSoup gearbeitet, um Sportdaten aus dem Internet zu kratzen. Ich bin auf ein Problem mit einer Tabelle auf der PGA-Website gestoßen, wo es von Javascript erzeugt wird, hoffte, dass jemand mich durch den Prozess im Kontext der spezifischen Website führen könnte, mit der ich arbeite. Hier ist ein Beispiel Link "http://www.pgatour.com/content/pgatour/players/player.29745.tyler-aldridge.html/statistics" die Tabellen sind alle Spieler Statistiktabellen. Vielen Dank!Python Scraping von JavaScript Tabelle auf PGA Website

+0

Sie können entweder 'selen' anstelle des kopflosen Browsers verwenden (so dass Javascript ausgeführt wird und dann den HTML-Code parsen kann) oder Sie versuchen die API zu drücken, die das Javascript verwendet. –

Antwort

1

Wenn eine Webseite JavaScript verwendet, um Inhalte zu erstellen oder zu erhalten, haben Sie kein Glück mit Tools, die HTML einfach aus dem Internet herunterladen. Sie benötigen etwas, das einen Webbrowser genauer nachahmt und JavaScript interpretiert. Mit anderen Worten, ein so genannter Headless-Browser. Es gibt einige da draußen, sogar einige mit guter Python-Integration. Sie können Ihre Reise beginnen, indem Sie nach PhantomJS oder Selenium suchen. Sobald Sie das Tool Ihrer Wahl ausgewählt haben, können Sie den Browser veranlassen, dass es funktioniert, und dann das DOM auf ähnliche Weise durchsuchen als mit BeautifulSoup auf statischen Seiten.

Ich würde aber auch zuerst auf die Registerkarte Netzwerk des Debuggers Ihres Browsers schauen. Manchmal können Sie die GET identifizieren, die tatsächlich die Tabellendaten vom Server erhält. In diesem Fall könnte es einfacher sein, die Daten selbst (z. B. über requests) zu verwenden als komplexe Technologie, um es für Sie zu tun. Es ist auch sehr wahrscheinlich, dass Sie die gewünschten Informationen in JSON erhalten, was es noch einfacher macht, sie zu verwenden. Die PGA-Seite macht GET s Hunderte von Ressourcen zu bauen, aber es wird immer noch ein guter Handel, um durch sie zu durchsuchen.

+0

Das ist interessant, etwas, das ich auf anderen Seiten kurz angeschaut habe, aber nie etwas gewonnen habe.Es sieht so aus, als ob das in diesem Fall der richtige Weg wäre, aber ich muss nur herumkramen und sehen, ob ich es herausfinden kann. –

+1

Beendete die JSON-Feeds. Danke noch einmal! –

0

Sie benötigen JavaScript-Engine, um JavaScript-Code innerhalb der Seite zu analysieren und auszuführen. Es gibt eine Reihe von Headless Browser, die Sie

http://code.google.com/p/spynner/

http://phantomjs.org/

http://zombie.labnotes.org/

http://github.com/ryanpetrello/python-zombie

http://jeanphix.me/Ghost.py/

http://webscraping.com/blog/Scraping-JavaScript-webpages-with-webkit/

helfen Auch

, betrachten dies mit:

http://www.seleniumhq.org/docs/03_webdriver.jsp

Selen-WebDriver machen direkte Anrufe an den Browser jeden Browser-native Unterstützung für die Automatisierung verwenden. Wie diese Direktanrufe getätigt werden und welche Funktionen sie unterstützen, hängt vom verwendeten Browser ab. Informationen zu jedem "Browser-Treiber" finden Sie weiter unten in diesem Kapitel.

Für diejenigen, die mit Selenium-RC vertraut sind, ist dies ganz anders als das, was Sie gewohnt sind. Selenium-RC funktionierte für jeden unterstützten Browser auf die gleiche Weise. Es hat Javascript-Funktionen in den Browser "injiziert", als der Browser geladen wurde, und dann sein Javascript verwendet, um die AUT innerhalb des Browsers zu steuern. WebDriver verwendet diese Technik nicht. Auch hier wird der Browser direkt über die integrierte Unterstützung des Browsers für die Automatisierung gesteuert.