Я собираю некоторые данные.
Одна из нужных мне точек данных - это дата, но ячейки таблицы, содержащие эти данные, включают только месяцы и дни.К счастью, год используется как элемент заголовка для классификации таблиц.
По какой-то причине year = table.find_element(...)
выбирает один и тот же элемент для каждой итерации.
Я бы ожидал, что year = table.find_element(...)
выберет уникальных элементов, относящихся к каждому уникальному table
элементам, поскольку он проходит через все из них, но это не так.
Фактический результат
# random, hypothetical values
Page #1
element="921"
element="921"
element="921"
...
Page #2
element="1283"
element="1283"
element="1283"
...
Ожидаемый вывод
# random, hypothetical values
Page #1
element="921"
element="922"
element="923"
...
Page #2
element="1283"
element="1284"
element="1285"
...
Почему следующий код выбирает один и тот же элемент для каждой итерации на каждой странице?
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
links_sc2 = [
'https://liquipedia.net/starcraft2/Premier_Tournaments',
'https://liquipedia.net/starcraft2/Major_Tournaments',
'https://liquipedia.net/starcraft2/Minor_Tournaments',
'https://liquipedia.net/starcraft2/Minor_Tournaments/HotS',
'https://liquipedia.net/starcraft2/Minor_Tournaments/WoL'
]
ff = webdriver.Firefox(executable_path=r'C:\\WebDriver\\geckodriver.exe')
urls = []
for link in links_sc2:
tables = ff.find_elements(By.XPATH, '//h2/following::table')
for table in tables:
try:
# premier, major
year = table.find_element(By.XPATH, './preceding-sibling::h3/span').text
except:
# minor
year = table.find_element(By.XPATH, './preceding-sibling::h2/span').text
print(year)
ff.quit()