我正在尝试访问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)
它不是打印文本。
更新所需部分的屏幕:
更新#2
对抗PhantomJS,你可以在这里看到 loader 图像(滚动图像)
答案 0 :(得分:2)
您需要告诉selenium在加载元素后使用WebDriverWait
和expected_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
中指定的时间限制内找不到该元素,您将收到错误