2017-09-30 4 views
0

Ich verwende die folgenden Codezeilen, um die Laufzeit eines Elements zu erhalten. Von der Ausgabe kann ich sehen, dass ich den richtigen Bereich anvisiere und dass das Utime-Attribut dort vorhanden ist, aber ich bekomme immer noch eine Ausgabe von None. Ich habe versucht, das Attribut data-utime mehrmals neu zu schreiben, um sicherzustellen, dass es für die Funktion korrekt formatiert ist. Was fehlt mir hier?Python Selen verwenden, um Zeitdaten zu scratzen

Code:

timeStampBox = post.find_element_by_css_selector('.fsm.fwn.fcg') 
    timeStampBox = timeStampBox.find_element_by_class_name('_5pcq') 

    print(timeStampBox.get_attribute('innerHTML')) 
    print(timeStampBox.get_attribute('data-utime')) 

Ausgang:

<abbr title="Monday, September 4, 2017 at 6:11am" data-utime="1504530675" data-shorten="1" class="_5ptz"><span class="timestampContent" id="js_15">September 4 at 6:11am</span></abbr> 
None 
+0

Ihr Code verweist auf eine Menge HTML, die Sie nicht veröffentlicht haben. – JeffC

Antwort

1

Das abbr Element ist die innerHTML von timeStampBoxaberdata-utime ist nicht ein Attribut timeStampBox.

Hier ist, wie ich Ihre Situation emuliert:

<html> 
<body> 
<div><abbr title="Monday, September 4, 2017 at 6:11am" data-utime="1504530675" data-shorten="1" class="_5ptz"><span class="timestampContent" id="js_15">September 4 at 6:11am</span></abbr></div> 
</body> 
</html> 

Das div Element ist ein Container für das abbr Element. Ich kann so tun, als ob es dein timeStampBox Element ist.

>>> from selenium import webdriver 
>>> driver = webdriver.Chrome() 
>>> driver.get('file://c:/scratch/temp.htm') 

identifizieren timeStampBox und seine innerHTML bekommen. Wie zuvor habe ich das abbr Element bekommen.

>>> timeStampBox = driver.find_element_by_tag_name('div') 
>>> timeStampBox.get_attribute('innerHTML') 
'<abbr title="Monday, September 4, 2017 at 6:11am" data-utime="1504530675" data-shorten="1" class="_5ptz"><span class="timestampContent" id="js_15">September 4 at 6:11am</span></abbr>' 

data-utime ist None weil diese Eigenschaft nicht in timeStampBox existiert.

>>> timeStampBox.get_attribute('data-utime') 

Aber es ist da in abbr.

>>> abbr = driver.find_element_by_tag_name('abbr') 
>>> abbr.get_attribute('data-utime') 
'1504530675' 

Moral unserer Geschichte: suchen sie direkt für abbr.

Verwandte Themen