Я пытаюсь почистить этот веб-сайт: https://fmdataba.com/19/p/621/toni-kroos/
, который содержит статистику некоторых игр футболиста, использующего селен.
driver = webdriver.Chrome('chromedriver.exe')
driver.implicitly_wait(3)
driver.get('https://fmdataba.com/19/p/621/toni-kroos/')
# wait page to load
sleep(1)
data = driver.find_element_by_class_name('panel-body')
print(data.text)
Благодаря этому я смог получить некоторую полезную информацию, выполнив data.text.split('\n')
и распечатав их.
for i, text in enumerate(data.text.split('\n')):
print(i, text)
Это дает мне,
...more...
34 Value € 69.0M
35 Wage € 20,000,000 p/a
36 Status First Team
37 Contrat 30/6/2022
38 Pre. Foot Either
39 Position DM, M (C)
40 Best Alternatives
41 * Players with similar attributes order by value, each attributes (3-) / (3+)
42 TECHNICAL
43 Corners 18
44 Crossing 18
45 Dribbling 14
46 Finishing 13
47 First Touch 18
48 Free Kick 14
49 Heading 7
50 Long Shots 17
51 Long Throws 8
52 Marking 8
53 Passing 20
54 Penalty Taking 13
55 Tackling 9
56 Technique 16
...more...
Затем я сделал что-то вроде ниже, чтобы проанализировать информацию, которая мне нужна
# 20: Age
bdate = player_info[20]
# 28: Nation
nation = player_info[28]
# 37: Foot
foot = player_info[37]
# 51 - 64: Tech
technical = {}
for stat in player_info[51:65]:
item = stat.split(' ')
if len(item) == 2:
ability, rate = item[0], item[1]
if len(item) == 3:
ability, rate = '{} {}'.format(item[0], item[1]), item[2]
technical[ability] = int(rate)
и, наконец, сделал что-то вроде
player_obj = {
'profile_img': img_url,
'name': name,
'birth_date': bdate,
'nation': nation,
'position': pos,
'foot': foot,
'abilities': abilities
}
чтобы завершить объект, который мне нужен.
Однако это не обобщено, и если я попробую то же самое на странице другого игрока, некоторые индексы будут показывать различную информацию.
Как я могу сделать это более обобщенным?
Последний объект, который я хочу для каждого игрока, выглядит следующим образом:
{
"profile_img": "https://fmdataba.com/images/p/3771.png",
"name": "Eden Hazard",
"birth_date": "7/1/1991",
"nation": "Belgium",
"position": "AM (RLC)",
"foot": "Either",
"abilities": {
"technical": {
"Corners": 12,
"Crossing": 12,
"Dribbling": 20,
"Finishing": 14,
"First Touch": 17,
"Free Kick": 13,
"Heading": 7,
"Long Shots": 11,
"Long Throws": 5,
"Marking": 3,
"Passing": 15,
"Penalty Taking": 19,
"Tackling": 4,
"Technique": 18
},
"mental": {
"Aggression": 8,
"Anticipation": 12,
"Bravery": 17,
"Composure": 15,
"Concentration": 13,
"Decisions": 16,
"Determination": 15,
"Flair": 18,
"Leadership": 6,
"Off The Ball": 14,
"Positioning": 7,
"Teamwork": 9,
"Vision": 16,
"Work Rate": 12
},
"physical": {
"Acceleration": 17,
"Agility": 20,
"Balance": 16,
"Jumping Reach": 8,
"Natural Fitness": 16,
"Pace": 16,
"Stamina": 17,
"Strength": 11
}
}
}
Заранее спасибо!