我有这个:
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 我该怎么办? 谢谢
答案 0 :(得分:0)
您可以像这样从<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
...
答案 1 :(得分:0)
您可以创建一个团队名称字典作为键,并以[entrenador,玩家]列表作为值
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)