Python Selenium:无法获取表内容

时间:2017-03-20 10:34:49

标签: python selenium

我正在尝试访问this网址,此处我必须在 Price / Tax History 部分下提取表格。以下是我的代码:

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,你可以在这里看到 loader 图像(滚动图像)

enter image description here

1 个答案:

答案 0 :(得分:2)

您需要告诉selenium在加载元素后使用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中指定的时间限制内找不到该元素,您将收到错误