Ich muss eine Seite mit Python zu kratzen. Ich erhalte den Quell-HTML-Code mit dem Urlib-Modul, aber ich muss auch etwas HTML-Code scrappen, der von einer JavaScript-Funktion erzeugt wird (die in der HTML-Quelle enthalten ist). Was diese Funktion tut, ist "in" der Site, dass wenn Sie eine Taste drücken, gibt es etwas HTML-Code aus. Wie kann ich diesen Knopf mit Python-Code "drücken"? Kann mir scrapy helfen? Ich habe die POST-Anfrage mit Firebug erfasst, aber wenn ich versuche, sie auf der URL zu übergeben, erhalte ich einen 403-Fehler. Irgendwelche Vorschläge?scrape HTML generiert von Javascript mit Python
Antwort
In Python glaube ich Selenium 1.0 ist der Weg zu gehen. Es ist eine Bibliothek, mit der Sie einen echten Webbrowser in Ihrer Sprache steuern können.
Sie müssen den fraglichen Webbrowser auf dem Computer installiert haben, auf dem Ihr Skript ausgeführt wird, aber es scheint die zuverlässigste Methode zu sein, Websites mit viel JavaScript programmatisch abzufragen.
ist gibt es einen Weg, um es mit Anfragen und schöne Suppe selbst zu tun? Ich habe Anfragen verwendet und es funktioniert gut in jedem anderen Fall, aber dies. Bitte lassen Sie mich wissen, wenn Anfragen dieses Ding auch lösen können. – Shaardool
@Shaardool: was zu lösen? Scraping HTML, das im Browser von JavaScript generiert wird? Nein - dafür benötigen Sie etwas, das das JavaScript ausführt, damit es das HTML erzeugen kann. Beautiful Soup lässt kein JavaScript laufen. –
danke für den Einblick, kann Requests-Bibliothek es tun?Es funktioniert gut mit AJAX-Anfragen an Server, aber ich möchte wissen, ob es mit Javascript, das auch HTML erstellt, arbeiten kann. Ich habe jedoch in ihren Unterlagen nichts dergleichen gefunden. – Shaardool
Ich musste dies vorher tun (in. NET) und Sie müssen im Grunde einen Browser hosten, um es auf die Schaltfläche klicken, und dann das DOM (Dokumentobjektmodell) des Browsers abfragen zu bekommen am generierten HTML.
Dies ist definitiv einer der Nachteile von Web-Apps, die sich auf einen Ajax/Javascript-Ansatz zum Generieren von HTML-Client-Seite hin bewegen.
Ich verwende Webkit, das ist der Browser-Renderer hinter Chrome und Safari. Es gibt Python bindings to webkit through Qt. Und hier ist ein voller example to execute JavaScript and extract the final HTML.
Da gibt es keine umfassende Antwort hier, ich werde weitermachen und einen schreiben.
abkratzen JS gerenderten Seiten, werden wir einen Browser benötigen, die eine JavaScript-Engine (ei, der JavaScript unterstützt Rendering)
Optionen wie Mechanize, url2lib wird nicht funktionieren, da sie nicht hat DO unterstütze JavaScript.
Also hier ist was Sie tun:
Setup-PhantomJS mit Selenium auszuführen. Nach der Installation der Abhängigkeiten für beide (siehe this) können Sie den folgenden Code als Beispiel verwenden, um die vollständig gerenderte Website abzurufen.
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('http://jokes.cc.com/')
soupFromJokesCC = BeautifulSoup(driver.page_source) #page_source fetches page after rendering is complete
driver.save_screenshot('screen.png') # save a screenshot to disk
driver.quit()
- 1. Wie scrappe HTML generiert von Javascript mit Python?
- 2. Bildschirm scrape HTML Kopf Inhalt?
- 3. Zugriff auf HTML generiert von Javascript mit htmlunit -Java
- 4. Python BeautifulSoup Scrape Tische
- 5. Scrape Hyperlinks von einer HTML-Seite
- 6. Python web scrape scheitern
- 7. Pass Parameter zu JavaScript-Funktion generiert HTML
- 8. JavaScript-Tag generiert Pause in HTML-Code
- 9. Python Scrape Stil Anzeige: keine
- 10. Bootstrap Dropdown mit Javascript generiert
- 11. Python Scrape urllib2 HTTP-Fehler
- 12. Scrape eine PHP-Variable mit Beautiful Soup, Urllib2 und Python
- 13. nosetests --cover-html generiert keine html docs
- 14. Pflegen Sie eingeloggten Zustand und scrape JavaScript
- 15. Konvertieren von HTML (mit Javascript) zu PDF mit JavaScript
- 16. Python-Bibliothek zum Rendern von HTML und Javascript
- 17. Html Agility Pack. Laden und scrape Webseite
- 18. Scrape und konvertieren Sie Website in HTML?
- 19. Scraping Javascript gerendert HTML-Seite in Python
- 20. Fehler mit VBA Web Scrape
- 21. Wie generiert Soundcloud ihr HTML?
- 22. sowohl mit Zitat generiert HTML-Datei "und" von R
- 23. Programmatic Python Browser mit JavaScript
- 24. Scrape Webseite mit Python + Schöner Suppe 4 Alle Seiten
- 25. Entfernen von HTML mit Javascript
- 26. kann nur Scrape Teil der Tabelle mit Python und BS4
- 27. PHP Daten von der Website scrape
- 28. Bildschirm scrape und Ajax
- 29. Scrape und loggen Sie sich in eckigen Webabb mit Python
- 30. generiert URL in HTML-Hilfs
Verschlissene verschleierte Adressen aus Webseiten für Mail-Listen? –
Ich beantwortete eine ähnliche Frage auf [Klicken Sie auf einen Javascript-Link in Python?] (Http://stackoverflow.com/questions/5207948/click-on-a-javascript-link-within-python/5227031#5227031) –