好吧,我想要播放器和信息表,但遇到一个我不明白的问题。
问题出在第8-9行; trs = table.find_all('tr')
from bs4 import BeautifulSoup
import requests
url = 'https://www.nbadraft.net/2019-nba-draft-combine-measurements'
resp = requests.get(url)
soup = BeautifulSoup(resp.content, 'html.parser')
table = soup.find('div', attrs={'class':'content'}).tbody
trs = table.find_all('tr')
for tr in trs:
tds = tr.find_all('td')
row = [td.text for td in tds]
---预期-
[[['player','info','info',etc]]
--- ACTUAL ---
trs = table.find_all('tr') AttributeError:“ NoneType”对象没有属性“ find_all”
答案 0 :(得分:0)
问题在于您正在选择第一个<tbody>
,它只是一个标题。所有<tr>
在下一个<tbody>
中。该脚本选择并打印所有行。
from bs4 import BeautifulSoup
import requests
url = 'https://www.nbadraft.net/2019-nba-draft-combine-measurements'
resp = requests.get(url)
soup = BeautifulSoup(resp.content, 'lxml')
rows = []
for tr in soup.select('.content table tr'):
tds = tr.find_all('td')
rows.append([td.text.strip() for td in tds])
for row in rows:
print(''.join( '{: <22}'.format(t) for t in row ))
打印:
Player Height w/o Shoes Height w/ Shoes Weight Wingspan Standing Reach Body Fat % Hand Length Hand Width
Nickeil Alexander Walker SG6' 4.25'' 6' 5.5'' 203.8 6' 9.5' 8' 6'' ' 5.90% 8.50 8.75
RJ Barrett SF - - - - - - - -
Charles Bassey C 6' 8.75'' 6' 10'' 239.0 7' 3.5'' 9' 1.5'' 8.50% 9.25 9.50
Darius Bazley PF 6' 7.75'' 6' 9'' 208.4 7' 0' 8' 11'' 3.60% ' 9.00 9.75
Bol Bol C 7' 0.75'' 7' 2.5'' 208.0 7' 7'' 9' 7.5'' 7.10% 9.25 9.50
Jordan Bone SG 6' 1.5'' 6' 2.75'' 179.0 6' 3.25'' 7' 11'' 5.00% 7.50 9.25
Brian Bowen II SF 6' 6.25'' 6' 7.5'' 200.0 6' 10' 8' 7'' 6.50% ' 8.50 9.75
Ky Bowman PG 6' 1'' 6' 2.25'' 181.2 6' 7'' 8' 2'' 4.90% 8.25 9.00
Ignas Brazdeikis SF 6' 5.75'' 6' 7.25'' 220.8 6' 9.25'' 8' 6'' 6.00% 8.75 9.50
Oshae Brissett SF-PF 6' 7'' 6' 8'' 203.2 7' 0'' 8' 8'' 2.90% 9.00 9.50
Moses Brown C 7' 1.25'' 7' 2.5'' 237.2 7' 4.75'' 9' 5'' 7.80% 9.50 10.25
Brandon Clarke PF/C 6' 7.25'' 6' 8.25'' 207.2 6' 8.25'' 8' 6'' 4.90% 8.25 9.50
Nicolas Claxton C 6' 10'' 6' 11.75'' 216.6 7' 2.5'' 9' 2'' 4.50% 9.25 9.50
... and so on.