Назначить данные, скопированные с веб-сайта, в кортежи - PullRequest
1 голос
/ 04 марта 2020

Работая над проектом по сравнению выигрышей чемпионов лиги из op.gg, я не могу найти способ фактически назначить выигрыш для имени чемпиона, вместо того, чтобы просто печатать их независимо друг от друга. Я думаю, что кортежи - моя лучшая ставка для этого, но я не на 100%, если это правильно, или как превратить это утверждение для печати в кортежи.

from selenium import webdriver
from selenium.webdriver import ChromeOptions

options = ChromeOptions()
options.add_argument('--headless')

driver = webdriver.Chrome(options=options)
driver.implicitly_wait(3)
driver.get('https://na.op.gg/statistics/champion/')

rows = driver.find_elements_by_xpath('//*[@id="ChampionStatsTable"]//tr[./td]')
data = []
for row in rows:
    name = row.find_element_by_xpath('./td[@class="Cell ChampionName"]').text
    win_rate = row.find_element_by_xpath('./td[@class="Cell ChampionName"]/following-sibling::td[1]').text
    print(name + ': ' + win_rate)

1 Ответ

0 голосов
/ 05 марта 2020

Чтобы сохранить значения в списке как кортежи, просто замените печать:

print(name + ': ' + win_rate)

назначением:

data.append((name, win_rate))

Затем вы можете получить к ним доступ по индексам:

print(data[3][0])   # will print the 4th element's name
print(data[1][1])   # will print the 2nd element's win_rate

Если имена уникальны, вы можете вместо этого использовать словарь - тогда вы можете получить win_rate под известным именем:

dict_data = {}
for row in rows:
    # and inside the for loop
    dict_data[name] = win_rate

print(dict_data['winner X'])   # will print that name's win_rate

for name in dict_data:    # to iterate over all names:
     print('the name: {}'.format(name)) 
     print('the win_rate: {}'.format(dict_data[name])) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...