2017-03-20 126 views
0

我正在嘗試訪問this網址,此處我必須根據價格/稅收歷史部分獲取表格。以下是我的代碼:Python Selenium:無法獲取表格內容

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) 

它不打印文本。

更新屏幕部分的要求:

enter image description here

更新#2

撞上了PhantomJS,在這裏你可以在部分中看到裝載機圖像(滾動圖像)

enter image description here

+0

你可以嘗試用下面的查詢選擇,請注意,這是不可擴展並且只能在第一行工作,因爲你需要做幾個更改:document.querySelector('#tax-price-history tbody tr td:nth-​​child(3)') –

+0

@AnupamSaini首先,我是使用Python,第二我沒有嘗試這個,並沒有工作 – Volatil3

+0

哪些文本,你正在嘗試提取準確,有幾個td沒有任何tex噸,他們有跨度和更多的跨度裏面,然後文本。 –

回答

2

您需要告訴硒使用WebDriverWaitexpected_conditions找到加載後的元素。

您需要引用頁面加載時不存在的元素,但是一旦Ajax請求完成,就應該存在。看起來#tax-price-history table應該滿足這個要求。

嘗試:

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') 

如果在wait規定的期限內未找到該元素,你會得到一個錯誤

+0

'value = method(self._driver)TypeError:'list'object is not callable' – Volatil3

+0

ah。 python的語法完全不同。我會編輯答案 – jymbob