python - 尝试使用 BeautifulSoup 获取 NFL 统计表的某些部分

标签 python html python-3.x beautifulsoup

我正在尝试获取表格上的每个特定统计数据。我已经将范围缩小到一个团队的每一列,只需获取实际数字即可!我的代码是:

import requests
from bs4 import BeautifulSoup
url = 'http://espn.go.com/nfl/statistics/team/_/stat/defense/position/defense'
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html)
HoustonDefense = soup.find('tr', class_="oddrow team-28-34")
print (HoustonDefense.prettify())

这会将 HoustonDefense 专栏打印如下:

<tr align="right" class="oddrow team-28-34">
  <td align="left">
    1
  </td>
  <td align="left">
    <a href="http://espn.go.com/nfl/team/_/name/hou/houston-texans">
   Houston
  </a>
  </td>
  <td>
    539
  </td>
  <td>
    272
  </td>
  <td class="sortcell">
    811
  </td>
  <td>
    22.0
  </td>
  <td>
    136
  </td>
  <td>
    65
  </td>
  <td>
    9
  </td>
  <td>
    102
  </td>
  <td>
    38
  </td>
  <td>
    1
  </td>
  <td>
    17
  </td>
  <td>
    5
  </td>
  <td>
    2
  </td>
</tr>

我想抓取每个 <td></td> 之间的数字并将它们分配给一个变量。任何帮助都会很棒!谢谢!

最佳答案

使用find_all()查找tr内的所有td元素并获取每个td的文本发现除了前两个单元格(排名和团队名称本身):

[td.text for td in HoustonDefense.find_all("td")[2:]]

打印:

[u'539', u'272', u'811', u'22.0', u'136', u'65', u'9', u'102', u'38', u'1', u'17', u'5', u'2']

关于python - 尝试使用 BeautifulSoup 获取 NFL 统计表的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34006683/

相关文章:

python - 如何在 mac 上使用 python 最大化 plt.show()?

python - 从 Raspberry PI 3 到 Arduino UNO 的串行通信丢失字节

python - numpy float的 "resolution"参数到底是什么

html - 带有翅膀的座位图 - 重新开放

html - IOS可以用Blob读取媒体片段

python - Python中的抽象方法

python - 如何优化groupby上的apply调用

python - 如何在VSCode中自动将根目录添加到python路径中?

javascript - HTML5 Canvas 绘画逼真简单铅笔

python - invoke.context.Context 因缺少位置参数而出现奇怪的错误