python - 如何将抓取的数据分配给具有相同类的两个不同变量?
问题描述
我正在使用以下 HTML 抓取网站:
我有以下代码:
import requests
from bs4 import BeautifulSoup
URL = 'https://texastech.com/sports/baseball/stats/2019/oregon/boxscore/14317#play-by-play'
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find(id='inning-all')
innings = results.find_all('table', class_='play-by-play')
for innings in innings:
situation = innings.find('caption')
away_team = innings.find('th', class_='text-center')
home_team = innings.find('th', class_='text-center')
print(away_team)
print(home_team)
我遇到的问题是我想将带有内容“ORE”的第一个“text-center”分配给 away_team 变量,同时将带有内容“TTU”的“text-center”分配给 home_team 变量。
当我运行我的代码时,它会将“ORE”分配给这两个变量,这在逻辑上是有意义的。我似乎无法理解如何选择“第二个”“文本中心”并将其分配给 home_team。
在两个表格标题都没有区分类别的情况下,关于如何实现这一点的任何建议?
感谢您抽出宝贵时间,如果有什么我可以添加以澄清我的问题,请不要犹豫。
解决方案
您有这样的问题,因为find
函数仅返回第一个匹配项,在您的情况下是 ORE,用于inning.find_all
获取列表和索引以获取第一个和第二个匹配项。
此外,您的 for 循环中有一个错误,您覆盖了 innings 变量
for innings in innings: <-
推荐阅读
- python - 如何在python中获取给定样本的值的概率?
- mongodb - 在 Ubuntu 20.04 LTS 上的 MongoDB 4.4.0 中找不到 mongoexport
- html - 使用 JQuery 实现水平滚动图像
- amazon-web-services - DynamoDB 是用户会话的好选择吗?
- linux - Conda activate.d 和 deactivate.d 不符合我的预期
- flask - 如何在jinja2中获取完整的当前网址(包括#anchor)
- java - DevOps Maven 部署工件:“传输文件失败......状态码为 503”
- c# - 为什么 NpgsqlParameter 在传递给 DbSet.FromSqlRaw 时不起作用
- python - FastAPI 请求中的不可散列类型
- typescript - 如何用未弃用的方法替换 rxJs 中的方法“combineLatest”?