Как будет использоваться следующее понимание вложенного списка в нижеприведенном понимании dict для извлечения ключей для dict?
key = [key for element in cont.select('span.number') for key in element['class']] #extracts keys
data = dict((k, v.get_text(strip=True)) for k, v in zip(cont.select('span.number, h4.name, span.position'), cont.select('span.number, h4.name, span.position'))) #creates a dict with three keys and three values
Цель состоит в том, чтобы извлечь имя класса указанного тега c в качестве ключа и это текст в виде значения.
Working example below:
from bs4 import BeautifulSoup as soup
import requests
from lxml import html
from pprint import pprint
player_page = requests.get('https://www.premierleague.com/clubs/43/Burnley/squad')
cont = soup(player_page.content, 'lxml')
key_number = [key for element in cont.select('span.number') for key in element['class']]
key_name = [key for element in cont.select('h4.name') for key in element['class']]
key_position = [key for element in cont.select('span.position') for key in element['class']]
data = {
k: v.get_text(strip=True)
for k,v in zip((number,name,position), cont.select('span.number', 'h4.name', 'span.position')) for (number,name,position) in zip(key_number,key_name,key_position)
}
Ожидаемый результат:
{'Burnley': {'number': 'some_number',
'name': 'some_name',
'position': 'some_postion'},
{'number': 'some_number',
'name': 'some_name',
'position': 'some_postion'}
}
РЕДАКТИРОВАТЬ: Я понял некоторые вещи, но не могу понять, почему я получаю сообщение об ошибке name 'number' is not defined
?