gpt4 book ai didi

python - 如何从 NFL 赛程表中抓取所有 td 和 tr 数据

转载 作者:太空宇宙 更新时间:2023-11-03 20:43:33 26 4
gpt4 key购买 nike

我正在从 espn.com 上抓取即将到来的 NFL 赛程的数据。但是,我只能获取表格的第一行,而不能获取表格的其余部分。我相信这是因为 html 的结构和每个日期都有不同的“td”。我可以获取周四的比赛数据,但无法获取其余数据

****9 月 5 日,星期四****比赛时间 (ET) NAT TV 门票地点 绿湾
芝加哥晚上 8:20 NBC 门票低至 290 美元,芝加哥士兵场
9 月 8 日星期日比赛时间 (ET) NAT TV 门票地点 田纳西州
克利夫兰下午 1:00 CBS 门票低至 121 美元克利夫兰 FirstEnergy 体育场

辛辛那提
西雅图下午 4:05 CBS 门票低至 147 美元,西雅图 CenturyLink Field
纽约
达拉斯下午 4:25 FOX 门票低至 50 美元 阿灵顿 AT&T 体育场 福克斯伯勒9 月 9 日星期一比赛时间 (ET) NAT TV 门票地点 休斯顿 新奥尔良晚上 7:10 ESPN 门票低至 112 美元 新奥尔良 Mercedes-Benz Superdome
丹佛
奥克兰晚上 10:20 ESPN 门票低至 72 美元 奥克兰奥克兰体育馆

我使用过 beautifulsoup,很容易就能获取数据,但解析数据却遇到了挑战。

我尝试继续使用 for 循环,但我可以停止迭代回溯。在阅读了上一篇关于回溯的文章后,我意识到我需要尝试不同的解决方案来解决问题。

import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse
import pandas as pd


main_url = ['http://www.espn.com/nfl/schedule'][1]

response = requests.get(main_url)

soup = BeautifulSoup(response.text, 'lxml')

table = soup.find('table')
rows = table.find_all('tr')
rows = iter(rows)

df = [td.text for td in next(rows).find_all('td') if td.text]
df2 = [td.text for td in next(rows).find_all('td') if td.text]


[1]: https://www.espn.com/nfl/schedule

最佳答案

我认为问题出在这一行:

table = soup.find('table')

事实是,上述页面由 3 个具有 class = "schedule" 属性的 table 元素组成。但是,在您的代码中,您仅使用了 find() 函数,而不是 find_all()。这是您最终只得到第一个表的内容的主要原因。所以,我相信,如果正确处理这部分,那么你就可以顺利进行。现在,我不太熟悉用于填充列表的集合表示法,因此代码包含良好的旧 for 循环样式。

#List to store the rows 
df = []
#Collect all the tables
tables = soup.find_all('table', class_ = "schedule")
for table in tables:
rows = soup.find_all('tr')
#rows = iter(rows)
row_item = []
for row in rows:
#Collect all 'td' elements from the 'row' & append them to a list 'row_item'
data_items = row.find_all('td')
for data_item in data_items:
row_item.append(data_item.text)
#Append the list to the 'df'
df.append(row_item)
row_item = []

print(df)

关于python - 如何从 NFL 赛程表中抓取所有 td 和 tr 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56728435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com