刮网站

问题描述 投票:0回答:2

我有这个:

 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])我得到了:,比利亚雷亚尔

Entrenador:
Javier Calleja
Jugadores:
  • 1 Sergio Asenjo
  • 13安德烈斯费尔南德斯
  • 25马里亚诺巴博萨
  • ...

    我的问题是我想要标记:

     <h2 class="cintillo">Villarreal</h2>
    

    标签:

  • 1 Sergio Asenjo
  • 把它放到数据库中我该怎么做?谢谢

    python html web-scraping beautifulsoup
    2个回答
    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'})
    

    然后将h2jugadores附加到多维列表中。

    完整代码:

    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
    ...
    

    但是:ぁzxswい


    0
    投票

    您可以创建一个团队名称字典作为键,并将[entrenador,players]列表作为值

    https://repl.it/@glhr/55550385
    © www.soinside.com 2019 - 2024. All rights reserved.