[英]What is the best way to scrape the basketball player's team name?
我可以成功刮取多列,但是,我無法獲取相應球員的球隊名稱。 到目前為止,這是我的代碼:
from urllib.request import urlopen
from lxml.html import fromstring
import pandas as pd
url = "https://www.basketball-reference.com/leagues/NBA_2018_advanced.html"
content = str(urlopen(url).read())
comment = content.replace("-->","").replace("<!--","")
tree = fromstring(comment)
for idx, bball_row in enumerate(tree.xpath('//table[contains(@class,"stats_table")]//tr[contains(@class,"full_table")]')):
names = bball_row.xpath('.//td[@data-stat="player"]/a')[0].text
mp = bball_row.xpath('.//td[@data-stat="mp"]/text()')[0]
per = bball_row.xpath('.//td[@data-stat="per"]/text()')[0]
ws = bball_row.xpath('.//td[@data-stat="ws"]/text()')[0]
bpm = bball_row.xpath('.//td[@data-stat="bpm"]/text()')[0]
vorp = bball_row.xpath('.//td[@data-stat="vorp"]/text()')[0]
print(names, per, ws, bpm, vorp)
至此一切正常。 不過,我想添加團隊名稱的類別。 我正在尋找縮寫的團隊名稱(例如,俄克拉荷馬城的OKC)。
以下代碼遇到錯誤:
team = bball_row.xpath('.//td[@data-stat="team_id"]/a')[0].text
print(team)
代碼開始打印所有團隊名稱,然后出現錯誤。
這是錯誤:
team = bball_row.xpath('.//td[@data-stat="team_id"]/a')[0].text
IndexError: list index out of range
只是重申我在尋找什么...我要嘗試在相應球員旁邊添加縮寫的球隊名稱。
任何建議將不勝感激。 我要在此先感謝社區的時間和努力!
您的腳本僅在找不到所需的值時才拋出該錯誤。 您所能做的就是捕捉錯誤並以正確的方式進行處理。 嘗試以下腳本:
import requests
from lxml.html import fromstring
url = "https://www.basketball-reference.com/leagues/NBA_2018_advanced.html"
content = requests.get(url).text
comment = content.replace("-->","").replace("<!--","")
tree = fromstring(comment)
for row in tree.xpath('//table[contains(@class,"stats_table")]//tr[contains(@class,"full_table")]'):
names = row.xpath('.//td[@data-stat="player"]/a')[0].text
mp = row.xpath('.//td[@data-stat="mp"]/text()')[0]
per = row.xpath('.//td[@data-stat="per"]/text()')[0]
ws = row.xpath('.//td[@data-stat="ws"]/text()')[0]
bpm = row.xpath('.//td[@data-stat="bpm"]/text()')[0]
vorp = row.xpath('.//td[@data-stat="vorp"]/text()')[0]
try:
team = row.xpath('.//td[@data-stat="team_id"]/a')[0].text
except IndexError: team = "N/A"
print(names, per, ws, bpm, vorp, team)
您可能會得到類似的輸出:
Alex Abrines 9.0 2.2 -2.2 -0.1 OKC
Quincy Acy 8.2 1.0 -2.2 -0.1 BRK
Steven Adams 20.6 9.7 3.3 3.3 OKC
Bam Adebayo 15.7 4.2 0.2 0.8 MIA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.