【发布时间】:2021-01-07 09:21:23
【问题描述】:
由于我对网络抓取还很陌生,我目前正在练习一些基础知识,例如这个。我已经从“th”标签和“tr”标签中抓取了类别,并将其附加到几个空列表中。 get_text() 中的类别很好,但是当我尝试打印球员时,它在名字的第一个字母之前有一个数字排名,在姓氏之后有球员的球队缩写字母。 我想做的三件事:
1) 通过从列表中进行一些切片,仅输出每个玩家的名字和姓氏,但我想不出任何更简单的方法来做到这一点。在标签中可能有一种更快的方法,我可以在其中调用类或在 html 中再次使用soup.findAll,或者我不知道的其他东西,但我目前不知道我缺少什么或缺少什么。
2) 取名称前的数字排名并将其附加到一个空列表中。
3)取最后 3 个缩写字母并将其附加到一个空列表中
任何建议将不胜感激!
from bs4 import BeautifulSoup as bs4
import requests
import pandas as pd
from time import sleep
players = []
categories = []
url ='https://www.espn.com/nba/stats/player/_/table/offensive/sort/avgPoints/dir/desc'
source = requests.get(url)
soup = bs4(source.text, 'lxml')
for i in soup.findAll('th'):
c = i.get_text()
categories.append(c)
for i in soup.findAll('tr'):
player = i.get_text()
players.append(player)
players = players[1:51]
print(categories)
print(players)
【问题讨论】:
标签: list web-scraping beautifulsoup slice findall