我正试图使用 篮球参考 使用python的API与 requests
和 bs4
库。
from requests import get
from bs4 import BeautifulSoup
这是我想做的一个最小的例子。
# example request
r = get(f'https://widgets.sports-reference.com/wg.fcgi?css=1&site=bbr&url=%2Fteams%2FMIL%2F2015.html&div=div_roster')
soup = BeautifulSoup(dd.content, 'html.parser')
table = soup.find('table')
一切都很顺利,我就可以把这个... ... table
到 pandas
以其 read_html
并将我需要的数据很好地打包到一个数据框中。
我遇到的问题是编码。
在这个特定的请求中,我得到了两个带有奇怪字符的NBA球员名字。Ersan Ä°lyasova
(Ersan İlyasova)和 Jorge Gutiérrez
(Jorge Gutiérrez). 在目前的代码中,它们被解释为 "Ersan Ä°lyasova "和 "Jorge Gutiérrez",这显然不是我想要的。
所以问题是 -- 我该如何解决这个问题?这个网站 似乎表明他们有 windows-1251
编码,但我不确定如何使用这些信息(事实上我甚至不确定这是否是真的)。
我知道我漏掉了一些基本的东西,因为我有点搞不清楚这些编码是如何工作的,在哪一点上它们被 "解释 "了等等,所以如果你能帮我解决这个问题,我将感激不尽!
我真的不知道为什么你要使用format string
你的问题也不清楚,你只是复制了网络流量中的url,然后你把引号和编码的事情混在一起。
下面你应该可以做到这一点。
import pandas as pd
df = pd.read_html("https://www.basketball-reference.com/teams/MIL/2015.html")
print(df)
输出。
[ No. Player Pos ... Unnamed: 6 Exp College
0 34 Giannis Antetokounmpo SG ... gr 1 NaN
1 19 Jerryd Bayless PG ... us 6 Arizona
2 5 Michael Carter-Williams PG ... us 1 Syracuse
3 9 Jared Dudley SG ... us 7 Boston College
4 11 Tyler Ennis PG ... ca R Syracuse
5 13 Jorge Gutiérrez PG ... mx 1 California
6 31 John Henson C ... us 2 UNC
7 7 Ersan İlyasova PF ... tr 6 NaN
8 23 Chris Johnson SF ... us 2 Dayton
9 11 Brandon Knight PG ... us 3 Kentucky
10 5 Kendall Marshall PG ... us 2 UNC
11 6 Kenyon Martin PF ... us 14 Cincinnati
12 0 O.J. Mayo SG ... us 6 USC
13 22 Khris Middleton SF ... us 2 Texas A&M
14 3 Johnny O'Bryant PF ... us R LSU
15 27 Zaza Pachulia C ... ge 11 NaN
16 12 Jabari Parker PF ... us R Duke
17 21 Miles Plumlee C ... us 2 Duke
18 8 Larry Sanders C ... us 4 Virginia Commonwealth
19 6 Nate Wolters PG ... us 1 South Dakota State