我正试图找到一种从rotogrinders页面中提取数据的方法,而不是典型的表格形式。我是新人,之前做过非常基本的事情:
url = 'site.com'
html = requests.get(url).content
df_list = pd.read_html(html)
temp_df = df_list[-1]
这已经足够了......但这是不同的。
如果你看一下https://rotogrinders.com/lineups/nfl?week=1&site=fanduel,我想按照他们列出的顺序(从上到下)获取每个团队的球员名单。从那里我将能够按团队进行深度图表,但我需要获得球员和位置列表。每个团队都在一个单独的列中,然后由相互比赛的两个团队分组。我只需要姓名和职位,但如果有其他信息,那就没问题了。
基本上,这就是我想要的输出:
Alex Smith QB $7.2K 31.0
Patrick Mahomes QB 0
Kareem Hunt RB $7.8K 43.1
Charcandrick West RB $5.2K 9.0
C.J. Spiller RB $4.5K 0
Tyreek Hill WR $7.2K 23.3
Chris Conley WR $4.9K 5.3
Albert Wilson WR $4.9K 6.2
De'Anthony Thomas WR $4.5K 0.7
Demarcus Robinson WR $4.5K 0
Travis Kelce TE $6.7K 6.9
Demetrius Harris TE $4.5K 8.5
Cairo Santos K $4.6K 6.0
Tom Brady QB $9.2K 10.7
Jimmy Garoppolo QB $6K 0
Mike Gillislee RB $6.7K 22.5
James White RB $5.7K 8.3
Dion Lewis RB $5.1K 0.9
Brandin Cooks WR $7.9K 10.3
Chris Hogan WR $6.2K 3.0
Danny Amendola WR $6.1K 13.0
Malcolm Mitchell WR $4.9K 0
Phillip Dorsett WR $5K 0.0
Rob Gronkowski TE $8.1K 4.3
Dwayne Allen TE $4.9K 0.0
Stephen Gostkowski K $5.1K 9.0
... ... .....
其次是其他团队。
编辑:所以这就是我正在做的事情。
url = 'https://rotogrinders.com/lineups/nfl?week=1&site=fanduel'
page = requests.get(url).content
soup = BeautifulSoup(page, 'html.parser')
name_box = soup.find('li', attrs={'class': 'player'})
name = name_box.text.strip()
这就是我得到的。我试图弄清楚如何从我现在拥有的东西(这是第一个拥有所有空白区域的玩家)进入上面显示的输出。
这是我的输出:
print (name)
Alex Smith
QB
$7.2K
31.0
答案 0 :(得分:1)
import bs4
import requests as re
import pandas as pd
alpha = re.get('https://rotogrinders.com/lineups/nfl?week=1&site=fanduel')
beta = bs4.BeautifulSoup(alpha.text,'lxml')
gama = beta.findAll('a',{'class':'player-popup'})
lister = [a.text for a in gama]
positions = beta.findAll('span',{'class':'position'})
positionslist=[span.text for span in positions]
salaries = beta.findAll('span',{'class':"salary"})
salarieslist = [span.text for span in salaries]
points = beta.findAll('span',{'class':"fpts actual"})
pointslist = [span.text for span in points]
target = pd.DataFrame(
{
'player name':lister
,'positions':positionslist
,'salaries':salarieslist
,'points':pointslist
})