硒为何无法在此div中找到任何东西?

时间:2019-04-24 11:23:33

标签: python selenium selenium-webdriver

硒找不到<div id="content">之后的任何内容。即使该div下有多个图层。包括我需要从中获取数据的div。

要尝试直接获取我所涉及的元素,我尝试了以下方法:

departures = driver.find_elements_by_class_name('departure')
    for departure in departures:
        print(departure)

当离场值一直显示为空列表时,我开始看着两点硒找不到任何东西。并发现它可以找到的最后一个div是<div id="content">

然后我尝试获取该div的innerHTML:

content = driver.find_element_by_xpath('//*[@id="content"]')
print(content)
HTML = content.get_attribute("innerHTML")
print(HTML)

HTML是一个空字符串,表明<div id="content">中没有任何内容。

重要的HTML部分: https://pastebin.com/L5Giz0H0

在HTML部分中,您可以看到<div id="content"><div id="OutboundDepartures" class="timetable">是一行。 但是当在firefox <div id="OutboundDepartures" class="timetable">中检查页面时,确实在<div id="content">

中显示为一个细分。

完整的HTML: https://pastebin.com/h07UpdqM

当我无法通过<div class="departure">时,如何从<div id="content"> div中获取数据?

1 个答案:

答案 0 :(得分:1)

使用WebDriverWait和CSS Selctor获取所有信息。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, 20)
items=wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '#content div.departure')))

for item in items:
    print(item.text)

输出:

08:30 Sneldienst
reisduur ca 45 min. 0 meter vrij 353 pers. vrij
09:45 Veerdienst Ms. Friesland
reisduur ca 120 min. 297 meter vrij 678 pers. vrij
12:30 Sneldienst
reisduur ca 45 min. 0 meter vrij 322 pers. vrij
15:00 Veerdienst Ms. Friesland
reisduur ca 120 min. 175 meter vrij 708 pers. vrij
17:20 Sneldienst
reisduur ca 45 min. 0 meter vrij 365 pers. vrij
19:55 Veerdienst Ms. Friesland
reisduur ca 120 min. 196 meter vrij 731 pers. vrij