2017-11-11 5 views
-1

一般的なテーブル形式ではなく、ロボページページからデータを取得する方法を見つけようとしています。私は新しい、以前は非常に基本的でした:一般的なテーブルではないWebスクレイピングデータ - python

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を見ると、各チームの選手のリストが、上から下に順番に表示されます。そこから、私はチームによって深さチャートを行うことができますが、私は選手とポジションのリストを取得する必要があります。各チームは別々の列にあり、お互いにプレイしている2つのチームによってグループ分けされています。私は名前と位置だけが必要ですが、他の情報があればうまくいきます。

基本的に、これは私が出力になりたいものです。チームの残りの部分が続く

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

はbeautifulsoupとの仕事を試してみてください。 –

+0

はい。私はbeautifulsoupで働いています。ちょうどそれで苦労している。私は基本的な、今はそれを拡張しようとしている。 上記を参照して、質問に私がどこにいるのかを追加しました... – chitown88

答えて

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 
}) 
関連する問題