通过BS4将Scraped Table加载到Pandas Dataframe中

Rav*_*lil 5 python beautifulsoup pandas

我正试图从这里获取任何Basic Box Score Stat或Advanced Box Score Stats表

我尝试过这样的事情:

url = "http://www.basketball-reference.com/boxscores/200112100LAC.html"
page = requests.get(url, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'})
soup = BeautifulSoup(page.content, "html5lib")

table =  soup.find('div', class_='overthrow table_container').find('table',class_='sortable stats_table')
df = pd.read_html(table)
print df
Run Code Online (Sandbox Code Playgroud)

但是由于NoneType'对象错误,它不起作用.有没有更好的方法来获取表格代码并将其放入数据框?谢谢.

jez*_*ael 10

您可以使用所有已解析表read_html中的DataFrames 返回列表:

df = pd.read_html('http://www.basketball-reference.com/boxscores/200112100LAC.html')[0] # or [1], [2]
print (df)
Run Code Online (Sandbox Code Playgroud)


宏杰李*_*宏杰李 7

table 是 BeautifulSoup 中的标签对象,您应该将其转换为字符串并将其传递给熊猫

prettify()方法将把一个 Beautiful Soup 解析树转换成一个格式良好的 Unicode 字符串,每个 HTML/XML 标签都在它自己的行上:

df = pd.read_html(table.prettify())
Run Code Online (Sandbox Code Playgroud)