如何选择具有相同类名的第二个div标签?

时间:2019-08-28 16:58:55

标签: python beautifulsoup

我正在尝试选择第二个带有信息类名的div标签,但是使用bs4 find_next却没有成功。您如何选择第二个div标签中共享类名的文本?

[<div class="info">
    <a href="/clubs/12/Manchester-United/overview">
        Manchester United<span class="playerClub badge-20 t1"></span>
    </a>
</div>
<div class="info">Defender</div>
<div class="info">
    <a href="/clubs/12/Manchester-United/overview">
        Manchester United<span class="playerClub badge-20 t1"></span>
    </a>
</div>
<div class="info">Defender</div>]

这是我尝试过的

from bs4 import BeautifulSoup
import requests

players_url =['http://www.premierleague.com//players/13559/Axel-Tuanzebe/stats']

# this is dict where we store all information:
players = {}

for url in players_url:
    player_page = requests.get(url)
    cont = soup(player_page.content, 'lxml')
    data = dict((k.contents[0].strip(), v.get_text(strip=True)) for k, v in zip(cont.select('.topStat span.stat, .normalStat span.stat'), cont.select('.topStat span.stat > span, .normalStat span.stat > span')))
    club = {"Club" : cont.find('div', attrs={'class' : 'info'}).get_text(strip=True)}
    position = {"Position": cont.find_next('div', attrs={'class' : 'info'})}
    players[cont.select_one('.playerDetails .name').get_text(strip=True)] = data

print(position)

1 个答案:

答案 0 :(得分:1)

您可以尝试以下操作:

clud_ele = cont.find('div', attrs={'class' : 'info'})
club = {"Club" : clud_ele.get_text(strip=True)}
position = {"Position": clud_ele.find_next('div', attrs={'class' : 'info'})}