Парсинг веб-сайта

У меня есть это:

 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]), я получаю это: , Вильярреал

Участник:
Хавьер Каллеха
Джугадоры:
  • 1 Серхио Асенхо
  • 13 Андрес Фернандес
  • 25 Мариано Барбоза
  • ...

    И моя проблема в том, что я хочу взять тег:

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

    И тег:

  • 1 Серхио Асенхо
  • И положить его в bataBase Как я могу это принять? Спасибо

    Почему в Python есть оператор "pass"?
    Почему в Python есть оператор "pass"?
    Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
    Некоторые методы, о которых вы не знали, что они существуют в Python
    Некоторые методы, о которых вы не знали, что они существуют в Python
    Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
    Основы Python Часть I
    Основы Python Часть I
    Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
    LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
    LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
    Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
    Оптимизация кода с помощью тернарного оператора Python
    Оптимизация кода с помощью тернарного оператора Python
    И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
    Советы по эффективной веб-разработке с помощью Python
    Советы по эффективной веб-разработке с помощью Python
    Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
    0
    0
    56
    2
    Перейти к ответу Данный вопрос помечен как решенный

    Ответы 2

    Ответ принят как подходящий

    Вы можете извлечь первый элемент <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

    Спасибо, это хорошая идея, но мне нужно сохранить в Equipo всех игроков, таких как: Alaves- fernando pacheco antonio sivera alex....

    RAZVAN LISMANU 07.04.2019 10:07

    @RAZVANLISMANU Я соответственно обновил свой ответ. Дайте мне знать, если это работает для вас.

    glhr 07.04.2019 10:58

    Вы можете создать словарь названий команд в качестве ключей со списками [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)
    

    Другие вопросы по теме