Python:如何抓取 ESPN 的比赛比赛信息

标签 python python-3.x loops iterator

对编程相当陌生,抱歉,问题很广泛。

import requests
from bs4 import BeautifulSoup

def data():
    League = ['nba', 'nfl', 'mlb']
    url = f"http://www.espn.com/{League[0]}/schedule"
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")
    date = soup.find('h2',{'class':'table-caption'})
    return date.string

这是我到目前为止所拥有的,但我希望能够做的是抓取今天的比赛,所以结果是:

>>> 'Los Angeles Lakers at Charlotte Bobcats 7:00PM'
>>> 'Boston Celtics at Detroit Pistons 7:00PM'

我看到所有信息都在那里,但我不知道如何迭代行,以及如何在数据不是专门作为字符串时提取数据。我知道这很广泛,而且有很多要求。提前抱歉!

最佳答案

我认为 SO 社区有时对初学者来说太苛刻了。

以下是您查找表格结果并提取主客队名称的方法:

for row in soup.select("table.schedule tbody tr"):
    home_team, away_team = row.select(".team-name")

    print(home_team.get_text(), away_team.get_text())

这里的想法是使用 CSS selector要定位表行,请迭代每一行并获取带有 team-name 类的两个元素。

<小时/>

总的来说,提出这样的事情的过程相对简单:

  • 在浏览器开发者工具中检查所需的元素
  • 考虑一下可以用来查找该元素的东西 - 唯一标识该元素的东西(例如查看那个 super 显式的 team-name 类)
  • 编写(在本例中)Python/BeautifulSoup 代码来尝试定位此元素
  • 重复直到有效

这只是高水平,但希望有帮助。

关于Python:如何抓取 ESPN 的比赛比赛信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53798872/

相关文章:

Python XML 解析器不返回 XML 元素

python - Python 的 HTML 调试 pretty-print

linux - Bash readline 在 while 循环中不起作用

python - 在 python 中通过文件传递命令行参数的最佳方法

python - Obspy 频谱图 ValueError(noverlap 必须小于 n)

python - 如何使用 Python 将 NULL 数据插入 MySQL 数据库?

python - Alexa Lambda 函数获取用户的全名

c - 使用 scandir() 时打开每个文件但不打开到其他目录的链接

r - 如何在调查包中的 svyttest 函数中使用 for 循环?

python - 如何传递多个输入值并将结果附加回 pandas 数据框