Erhalte den ausgeführten Javascript-Inhalt in Python [duplizieren]

8

Gibt es eine Möglichkeit, die ausgeführten Javascript-Inhalte von einer Webseite zu bekommen? Ich habe versucht Anfragen + BeautifulSoup, mechanize, diese ergeben mich mit "Quellcode" der Webseite und nicht das executed javascript. Zum Beispiel diese Website: - Ссылка

Wie Sie sehen, wird im Quellcode JS nicht ausgeführt, aber wenn Sie das Element untersuchen, sehen Sie den ausgeführten Code.

Nun, gibt es irgendeinen Weg, wie ich diesen EXECUTED-Code in Python bekommen könnte? Hinweise bitte, weil ich versucht habe, einen Browser zu emulieren, der mechanize verwendet und es tut dasselbe wie reuqests. Danke

    
Xonshiz 29.09.2015, 01:39
quelle

3 Antworten

3

Tatsächlich wird die JavaScript-Engine für die Ausführung von Javascript benötigt. Python ist eine Sprache mit einem eigenen Interpreter (Compiler!) Zur Ausführung von Python-Code. Dies sind zwei verschiedene Technologien. Also, wenn Sie Javascript von Python ausführen möchten, muss Python API oder eine Art von Bindungen, die mit der Engine interagieren Javascript ausführt. Glücklicherweise hat Python Interaktivität mit mehreren JS-Engines, um Web-bezogene Arbeiten zu implementieren (Testen usw.). Dieser interoperable JS kann wie folgt in zwei Gruppen unterteilt werden:

  1. Browser ohne Grafische Benutzeroberfläche (GUI) aka Headless-Browser : z. PhantomJS ein Webkit Rendering-Engine-basierter kopfloser Browser, SlimerJS ein Gecko Rendering-Engine-basierter Headless-Browser für mehr hier . Sie können mit PhantomJS mit selen zusammenarbeiten (ein Bindeglied zwischen Python und PhantomJS) oder Sie können PyQt und verwende Python, um JS wie hier .
  2. Browser mit Grafischer Benutzeroberfläche (GUI): z. Firefox, Chromium, Safari usw. In diesem Fall können Sie JS auch über selen python ausführen.

Einfaches Beispiel für die Ausführung von JS in Selen Python wie folgt -

%Vor%     
SIslam 10.10.2015, 00:16
quelle
1

Nur zum Hervorheben - Python führt Ihren Js-Code nicht aus, aber Laufzeit tut es. Hier ist ein Beispiel für das Python-Modul, das die verfügbare Laufzeit auswählt und Code für Sie auswertet.

Sehen Sie sich PyExecJS an , hier finden Sie einige Beispiele, aber berücksichtigen Sie, dass es keine Browser-APIs enthält wie DOM, Html5 Api, etc. Es basiert hauptsächlich auf js-Engine-Fähigkeiten.

Eine weitere große Frage, was ist der Grund, Code in der Python zu bewerten?

    
Artemis 12.10.2015 16:45
quelle
0

Ja, Sie müssen ein Werkzeug auswählen, das Javascript-Inhalte unterstützt, andere zu Mechanikern. Mechanik ist nur für statischen Inhalt wie du schon beobachtet hast. Es gibt mehrere, gefunden durch Suchbegriffe "Python Alternative zur Mechanik". Ich würde PhantomJS testen, wenn ich einen auswählen müsste.

Auch einige andere sind in den anderen Antworten in den Kommentaren gefunden, nur wollte ich diese als Kommentare zu hinterlassen, um zu vermeiden "SO ist nicht eine Auswahl Ihr Lieblings-Tool Empfehlung Website" Problem und damit nur die universelle Lösung ist erwähnt. Also, bitte haben Sie eine kleine Suche;)

    
mico 06.10.2015 07:09
quelle