Не могу получить содержимое некоторых табличных данных с веб-страницы

1

Я написал сценарий Python 3, который использует Selenium для извлечения данных из таблицы в IFrame из Rooster Resource. Эта таблица содержит график MLB на 2018 год.

Однако, когда сценарий выполняется, я получаю следующую ошибку:

selenium.common.exceptions.TimeoutException:

когда он достигает строки, содержащей iframe внутри моего скрипта. Почему это так?

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

driver = webdriver.Chrome()
driver.get("link above")
wait = WebDriverWait(driver, 10)
wait.until(EC.frame_to_be_available_and_switch_to_it(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "iframe#pageswitcher-content")))))
for items in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "table.waffle tr"))):
    data = [item.text for item in items.find_element_by_css_selector("td")]
    print(data)

driver.quit()

Btw, Если вы просматриваете приведенную выше ссылку, вы можете увидеть таблицу, содержащую различные красочные логотипы и тексты

FYI, я не хочу повторно использовать ссылку внутри этого iframe; скорее, я хочу переключиться на него, чтобы получить данные.

Теги:
python-3.x
web-scraping
selenium
selenium-webdriver

1 ответ

1

Есть два вложенных iframes на этой странице для доступа к контенту. Попробуйте это вместо этого:

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

driver = webdriver.Chrome()
driver.get("above link")
wait = WebDriverWait(driver, 10)
wait.until(EC.frame_to_be_available_and_switch_to_it(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "iframe")))))
wait.until(EC.frame_to_be_available_and_switch_to_it(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "iframe#pageswitcher-content")))))
for items in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "table.waffle tr"))):
    data = [item.text for item in items.find_elements_by_css_selector("td")]
    print(data)

driver.quit()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню