2017-03-20 12 views
0

Ich versuche auf this URL zuzugreifen, hier muss ich Tabelle unter Preis/Steuer Geschichte Abschnitt abrufen. Unten ist mein Code:Python Selenium: Tabelleninhalt kann nicht abgerufen werden

from selenium import webdriver 
from selenium.webdriver.common.by import By 

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from time import sleep 
import os, sys 
from multiprocessing import Pool 
from selenium.webdriver import DesiredCapabilities 
from selenium.webdriver.support.ui import WebDriverWait 

driver = webdriver.Firefox() 
wait = WebDriverWait(driver, 5) 
driver.maximize_window() 
driver.get('https://www.zillow.com/homedetails/2114-Bigelow-Ave-N-Seattle-WA-98109/48749425_zpid/') 
sleep(10) 
p_history = driver.find_elements_by_css_selector('#tax-price-history table tr > td') 
    for p in p_history: 
     print(p.text) 

es wird kein Text gedruckt.

aktualisieren Bildschirm des Abschnitts erforderlich:

enter image description here

Update # 2

Ran gegen PhantomJS und hier können Sie loader Bild im Abschnitt (Blättern Sie das Bild sehen)

enter image description here

+0

Können Sie mit der folgenden Abfrage Selektor versuchen, beachten Sie, dass es nicht erweiterbar ist und würde nur in der ersten Zeile arbeiten, dafür müssten Sie noch ein paar Änderungen vornehmen: document.querySelector ('# tax-price-history tbody tr td: nth-child (3)') –

+0

@AnupamSaini Zunächst einmal bin ich mit Python, zweitens habe ich das versucht und nicht funktioniert – Volatil3

+0

welcher Text Sie versuchen, genau zu holen, gibt es einige td, die keine tex hat t, sie haben Spannweite und einige mehr Spannweite in ihnen und dann Text. –

Antwort

2

Sie müssen Selen angeben, dass es WebDriverWait und expected_conditions verwenden soll, um das Element zu finden, sobald es geladen ist.

Sie benötigen einen Verweis auf ein Element, das beim Laden der Seite nicht vorhanden ist. Es sollte jedoch vorhanden sein, sobald die Ajax-Anforderung abgeschlossen ist. Es sieht aus wie #tax-price-history table sollte diese Anforderung erfüllen.

Versuch:

from selenium.webdriver.support import expected_conditions as EC 
parent = wait.until(EC.presence_of_element_located((
    By.CSS_SELECTOR, '#tax-price-history table'))) 

p_history = parent.find_element_by_css_selector('td') 

Wenn das Element nicht in der Frist in wait angegeben gefunden wird erhalten Sie eine Fehlermeldung erhalten

+0

'value = method (self__driver) TypeError: 'list' Objekt kann nicht aufgerufen werden ' – Volatil3

+0

ah. Die Syntax ist in Python ziemlich unterschiedlich. Ich werde die Antwort bearbeiten – jymbob

Verwandte Themen