Ich versuche, eine Website zu scrappen, indem Sie in Chrome auf das HTML schauen und die Daten mit Nokogiri erfassen. Das Problem besteht darin, dass einige der Tags dynamisch generiert werden und bei Verwendung von open-uri nicht mit einer offenen (URL-) Anfrage angezeigt werden. Gibt es eine Möglichkeit, eine Website zu "zwingen", ihren Inhalt dynamisch zu generieren, damit ein Tool wie Open Uri gelesen werden kann?Dynamisch generiertes HTML mit Nokogiri/Open URI
Antwort
Wenn das Lesen über open-uri nicht den Inhalt erzeugt, den Sie benötigen, ist die Wahrscheinlichkeit groß, dass der Client Inhalt mit Javascript generiert.
Dies kann eine gute Nachricht sein - durch die Überprüfung der AJAX-Anfragen, die die Seite macht, finden Sie möglicherweise einen JSON-Feed des gesuchten Inhalts, den Sie dann direkt anfordern und analysieren können. Dadurch würden Sie Ihre Daten bekommen, ohne sich durch den HTML-Code zu graben - praktisch!
Wenn das aus irgendeinem Grund nicht funktioniert, müssen Sie die Seite mit einer Art Browser öffnen, das clientseitige Javascript ausführen lassen und dann das resultierende DOM in HTML ablegen. Etwas wie PhantomJS ist eine ausgezeichnete Wahl für diese Art von Arbeit.
Tipp # 1 hat mir eine Menge Zeit gespart. –
- 1. Dienen ein dynamisch generiertes Bild mit Django
- 2. Dynamisch generiertes WebUser-Steuerelement
- 3. Dynamisch generiertes Anzeigeobjekt als Gradientenmaske
- 4. Smarty: Zugriff auf ein dynamisch generiertes Array?
- 5. CodeIgniter URI-Routing (dynamisch, mehrsprachig)
- 6. angularJS dynamisch generiertes li-Tag mit ng wiederholtes Erstellen mehrerer ul-Tags
- 7. HTML dynamisch annotieren?
- 8. HTML Schieberegler dynamisch aktualisieren
- 9. Entfernen dynamisch eingefügten HTML mit jQuery
- 10. Graf Dynamisch erstellte HTML-Elemente mit jquery
- 11. HTML Dropdown-Menüs dynamisch mit Javascript ändern
- 12. ASP.NET dynamisch HTML generieren mit Server
- 13. Spalten dynamisch laden mit HTML 5
- 14. Mit Include dynamisch auf HTML zeigen
- 15. HTML DIVS expandiert mit Inhalt dynamisch?
- 16. Funktioniert ImageView.setImageURI (Uri uri) mit Remote-Dateien?
- 17. Wie dynamisch HTML-Code mit HTML Agility Pack analysieren?
- 18. WebClient.DownloadFile 404 Fehler mit HTML-Zeichen in URI?
- 19. Reagieren Ureinwohner, Bild uri dynamisch ändern - Bild nicht
- 20. web generiertes Bild in require.js Modul hochladen
- 21. Musik dynamisch in HTML abspielen
- 22. HTML Seiten dynamisch anzeigen AngularJS
- 23. Dynamisch HTML in ASP.NET generieren
- 24. dynamisch generiertes Element erscheint schwach durch Verwendung von Deckkraft und Übergang? (javascript, css)
- 25. JavaScript dynamisch in HTML einbetten
- 26. wie html Hintergrund ändern dynamisch
- 27. eckig dynamisch generieren HTML-Datei
- 28. Uri mit leerem Pfad
- 29. Downloadmanager mit benutzerdefinierten Uri
- 30. 'Dies' bezieht sich auf falsch dynamisch generiertes Element in jQuery on()
Werfen Sie einen Blick auf [mechanize] (http://mechanize.rubyforge.org/). Ich denke, es könnte tun, was du willst. – Aaronneyer
Abhängig davon, wie diese Website ihren Inhalt generiert, müssen Sie möglicherweise zuerst JavaScript ausführen. – tessi
Manchmal Mechanisieren in komplexen Websites blockiert. Wenn JRuby eine Option ist und Mechanize nicht funktioniert, werde ich auch auf [Celerity] (http://celerity.rubyforge.org/) schauen. – yonosoytu