2017-08-17 13 views
0

URLにあるこれらの3人のプレイヤーの名前だけを返したいと思います。現在のコードは、名前、チーム、バスケットボールの関連付けを返します。名前だけを返すようにコードで指定できるものはありますか?美しいスープを使ったバスケットボールデータの掻き取りデータ

hereからこするデータ:

import requests 
    from bs4 import BeautifulSoup 


def bball_spider(str): 
    source_code = requests.get(str) 
    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text, "html.parser") 

# Players 
for elements in soup.find('table' , {'id' : 'stats'}).findAll('a'): 
    names = elements.string 
    print(names) 



str = input("Enter the Query Result URL ") 

bball_spider(str) 

答えて

1

あなたはほとんどありますが、あなたは、Pythonに新しいしているようですので、最初に私はこれを言及してみましょう:あなたは、変数strに名前を付けるべきではありません、それが構築さをシャドウので、 -in strクラスです。これは、以下に示すコードで変更したものです。重要な変更点は、.findAll('a').findAll('td',{'class':'left active'})に変更し、プレーヤーのすべての名前がleft active<td>タグに含まれていることを確認しました。私はまた、反復するvarを複数の代わりにelementに変更しました。意味的に言えばより意味があります。また、投稿したコードが正しく識別されていないことに注意してください。ただし、ここに貼り付けたときの書式設定の問題だと思います。

import requests 
from bs4 import BeautifulSoup 

def bball_spider(url): 
    source_code = requests.get(url) 
    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text, "html.parser") 

    # Players 
    for element in soup.find('table',{'id' : 'stats'}).findAll('td',{'class':'left active'}): 
     names = element.string 
     print(names) 

url = '''https://www.basketball-reference.com/play-index/psl_finder.cgi?request=1&match=single&type=totals&per_minute_base=36&per_poss_base=100&season_start=1&season_end=-1&lg_id=NBA&age_min=0&age_max=99&is_playoffs=N&height_min=0&height_max=99&year_min=2017&year_max=2017&birth_country_is=Y&as_comp=gt&as_val=0&pos_is_g=Y&pos_is_gf=Y&pos_is_f=Y&pos_is_fg=Y&pos_is_fc=Y&pos_is_c=Y&pos_is_cf=Y&c1stat=fg3_pct&c1comp=gt&c1val=40&c2stat=fg3a&c2comp=gt&c2val=164&c3stat=dbpm&c3comp=gt&c3val=0&order_by=ws''' 
bball_spider(url) 

これが印刷されます:

Chris Paul 
Otto Porter 
Joe Ingles 
関連する問題