Python:我如何抓取ESPN进行游戏对决

时间:2018-12-16 02:08:37

标签: 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'

我看到所有信息都在其中,但是我不知道如何遍历行,以及当数据不是专门作为字符串时如何拉取数据。我知道这是广泛的,有很多要求。不好意思!

1 个答案:

答案 0 :(得分:2)

我认为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类获得两个元素。


提出这样的总体过程相对简单:

  • 在浏览器开发人员工具中检查所需的元素
  • 考虑可用于查找该元素的事物-可以唯一标识该元素的事物(例如,查看该超显式team-name类)
  • 编写(在这种情况下)Python / BeautifulSoup代码以尝试找到此元素
  • 重申直到生效

这只是一个高水平,但希望对您有所帮助。