У меня есть это:
from bs4 import BeautifulSoup
import requests
page = requests.get("https://www.marca.com/futbol/primera/equipos.html")
soup = BeautifulSoup(page.content, 'html.parser')
equipos = soup.findAll('li', attrs = {'id':'nombreEquipo'})
aux = []
for equipo in equipos:
aux.append(equipo)
Если я печатаю (aux [0]), я получаю это: , Вильярреал
И моя проблема в том, что я хочу взять тег:
<h2 class = "cintillo">Villarreal</h2>
И тег:
И положить его в bataBase Как я могу это принять? Спасибо
Вы можете извлечь первый элемент <h2 class = "cintillo">
из equipo
следующим образом:
h2 = str(equipo.find('h2', {'class':'cintillo'}))
Если вам нужен только внутренний HTML (без тегов), используйте:
h2 = equipo.find('h2', {'class':'cintillo'}).text
И вы можете извлечь все элементы <span class = "dorsal-jugador">
из equipo
следующим образом:
jugadores = equipo.find_all('span', {'class':'dorsal-jugador'})
Затем добавьте h2
и jugadores
в многомерный список.
Полный код:
from bs4 import BeautifulSoup
import requests
page = requests.get("https://www.marca.com/futbol/primera/equipos.html")
soup = BeautifulSoup(page.content, 'html.parser')
equipos = soup.findAll('li', attrs = {'id':'nombreEquipo'})
aux = []
for equipo in equipos:
h2 = equipo.find('h2', {'class':'cintillo'}).text
jugadores = equipo.find_all('span', {'class':'dorsal-jugador'})
aux.append([h2,[j.text for j in jugadores]])
# format list for printing
print('\n\n'.join(['--'+i[0]+'--\n' + '\n'.join(i[1]) for i in aux]))
Выходной образец:
--Alavés--
Fernando Pacheco
Antonio Sivera
Álex Domínguez
Carlos Vigaray
...
Демо: https://repl.it/@glhr/55550385
@RAZVANLISMANU Я соответственно обновил свой ответ. Дайте мне знать, если это работает для вас.
Вы можете создать словарь названий команд в качестве ключей со списками [entrenador, player] в качестве значений.
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://www.marca.com/futbol/primera/equipos.html')
soup = bs(r.content, 'lxml')
teams = {}
for team in soup.select('[id=nombreEquipo]'):
team_name = team.select_one('.cintillo').text
entrenador = team.select_one('dd').text
players = [item.text for item in team.select('.dorsal-jugador')]
teams[team_name] = {entrenador : players}
print(teams)
Спасибо, это хорошая идея, но мне нужно сохранить в Equipo всех игроков, таких как: Alaves- fernando pacheco antonio sivera alex....