首页 > 解决方案 > 如何将抓取的数据分配给具有相同类的两个不同变量?

问题描述

我正在使用以下 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。

在两个表格标题都没有区分类别的情况下,关于如何实现这一点的任何建议?

感谢您抽出宝贵时间,如果有什么我可以添加以澄清我的问题,请不要犹豫。

标签: pythonhtmlweb-scraping

解决方案


您有这样的问题,因为find函数仅返回第一个匹配项,在您的情况下是 ORE,用于inning.find_all获取列表和索引以获取第一个和第二个匹配项。

此外,您的 for 循环中有一个错误,您覆盖了 innings 变量

for innings in innings: <-

推荐阅读