Очистка нескольких таблиц, спрятанных в кадрах в Selenium - щелкнуть, чтобы не получить новую таблицу - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь очистить таблицы от этой страницы , динамической страницы, где таблицы скрыты во фреймах. Я использую Google Colab / Python / Selenium.

Когда я перехожу к исходной ссылке, я могу найти в теге другой URL, который показывает фактические таблицы на странице по умолчанию, и я могу легко их очистить.

Но мне нужно щелкнуть второстепенные элементы, что мне удалось сделать. Проблема в том, что я на самом деле не получаю таблицы, просто еще один элемент с тегом javascript вместо таблиц.

def init_browser():
# Mac-specific browser init
    options = Options()
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--disable-gpu')
    driver = webdriver.Chrome('chromedriver', options=options)
    driver.implicitly_wait(5) # seconds

    return driver
stage = 'http://www.matsport.fr.php72-23.lan3-1.websitetestlink.com/LiveCyc/main.php?Race=GBW&Saison=2019&Lang=Fr&Stage=3'
driver = init_browser()
driver.get(stage)
sleep(2)

# Scrape the page
soup = BeautifulSoup(driver.page_source, 'lxml')
try:
   tables = soup.find_all('table', class_='Class_TableClassement')
except ElementDoesNotExist:
   print("Results not found")
table = []
for item in tables:
    table.append(pd.read_html(str(item))[0])

Это дает мне две таблицы по умолчанию в данных. Затем я могу получить идентификаторы ссылок для других таблиц результатов (точки, горы и т. Д.)

links = soup.find_all('div', class_='Class_LienClassement')
ids = []

for item in links:
    ids.append(item['id'])

[ 'Class_LienClassement_SL', 'Class_LienClassement_1', 'Class_LienClassement_2', 'Class_LienClassement_3', 'Class_LienClassement_4', 'Class_LienClassement_5', 'Class_LienClassement_6'] * ​​1013 *

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

from selenium.webdriver.common.action_chains import ActionChains
driver.get(stage)
button = driver.find_element_by_id('Class_LienClassement_2')
ActionChains(driver).move_to_element(button).click().perform()
soup = BeautifulSoup(driver.page_source, 'lxml')

Таблицы должны быть в div class = "Class_DivAffClassementContent", но вместо этого они пустые.

Мне кажется, что я провел все исследования, которые мог сделать здесь, и застрял, пытаясь сделать динамический контент видимым для следующего набора таблиц. Если кто-то может помочь, я буду очень признателен!

...