对编程相当陌生,抱歉,问题很广泛。
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/