2017-05-31 5 views
0

Ich schreibe gerade ein Skript, das den Inhalt einer Seite ausgibt und dann die Daten extrahiert, die ich für zukünftige Nutzdaten benötige.Wert von Javascript in Python erhalten

Ich bin zwar nicht in der Lage, einen bestimmten Wert namens "dfValue" zu finden, es scheint in Javascript gefunden zu werden, also kann ich nur eine leere Antwort bekommen, wenn ich den "dfValue" Inhalt extrahiere.

Die dfValue Schnipsel ist unten:

<script type="text/javascript" src="/hpp/js/df.js?v=20170531"></script> 

<div id="df_swf_c" style="display:none;"></div> 
<input type="hidden" name="dfValue" id="dfValue" value="" /> 
<script type="text/javascript"> 
    //<![CDATA[ 
    dfDo("dfValue"); 
    //]]> 
</script> 

mit ähnlichen Werten auf der Seite Ich bin in der Lage, es zu extrahieren, indem Sie einfach Code wie.

aber das funktioniert nicht, gibt es eine bestimmte Möglichkeit, den dfValue zu extrahieren?

Beratung wird geschätzt.

+0

Was macht 'dfDo (" dfValue ")? Sind Sie sicher, dass der Eingang 'dfValue' nicht leer ist? – Nurjan

+0

Ich habe einfach kopiert und eingefügt den dfValue Inhalt der Seite, wenn ich versuche, den dfValue mit suppenpython zu extrahieren gibt eine leere Zeile. – Larsson

+0

Ich denke ** dfValue ** ist selbst ein Wert und nur der Eingabeparameter für die Funktion ** dfDo **. Sie müssen überprüfen, was genau dfDo tut. Wenn es ein DOM-Objekt setzt, können Sie sie über Python holen. –

Antwort

0

Das input Element ist nicht in Javascript. Es ist zugänglich. Wie hier gezeigt, ist das name des Elements input 'dfValue' und sein value ist '' (ein leerer String).

>>> from bs4 import BeautifulSoup 
>>> soup = BeautifulSoup(open('temp.htm'), 'lxml') 
>>> input = soup.find('input') 
>>> input.attrs['name'] 
'dfValue' 
>>> input.attrs['value'] 
'' 

Wenn Sie müssen in der Lage sein, Daten in dieses Feld eingeben, oder auf andere Weise diese Form manipulieren, dann könnten Sie die Selen-Bibliothek in Betracht ziehen.