【发布时间】:2021-08-05 09:15:18
【问题描述】:
当我运行 for 循环来收集 <div> 标记中的元素时,它只返回具有相同 class 的所有列表中的第一个。
例如:
r = requests.get("https://one-versus-one.com/en/rankings/all/statistics")
soup = BeautifulSoup(r.content, 'lxml')
data = {
'players': [],
'club': [],
'rank': []
}
def getstuff(soup):
products = soup.find_all('div', {'class':'rankings-table'})
for name in products:
players = name.find('div', {'class':'player-name rankings-table__player-name'}).text
club = name.find('span', {'class':'rankings-table__club-name'}).text
rank = name.find('div', {'class':'rankings-table-cell value rankings-table__value'}).text.strip()
data['players'] = players
data['club'] = club
data['rank'] = rank
print(data)
getstuff(soup)
这会返回:
{'players': 'Lionel Messi', 'club': 'Barcelona', 'rank': '100'}
我希望所有球员、俱乐部和排名都打印在页面中。
【问题讨论】:
标签: python web-scraping