3 回答

TA貢獻1811條經驗 獲得超4個贊
您可以使用 CSS 選擇器nth-of-type(n)。它適用于兩個鏈接:
import requests
from bs4 import BeautifulSoup
url = "https://system.gotsport.com/org_event/events/1271/schedules?age=19&gender=m"
soup = BeautifulSoup(requests.get(url).content, "html.parser")
for tag in soup.select(".small-margin-bottom td:nth-of-type(1)"):
print(tag.text.strip())
輸出:
OCYS
FL Rush
Jacksonville FC
Atlanta United
SSA
...
...
Real Salt Lake U19
Real Colorado
Empire United Soccer Academy

TA貢獻1875條經驗 獲得超5個贊
每個括號對應一個“面板”,每個面板有兩行,第一行包含比賽表中所有球隊的第一個表。
def main():
import requests
from bs4 import BeautifulSoup
url = "https://system.gotsport.com/org_event/events/1271/schedules?age=19&gender=m"
response = requests.get(url)
response.raise_for_status()
soup = BeautifulSoup(response.content, "html.parser")
for panel in soup.find_all("div", {"class": "panel-body"}):
for row in panel.find("tbody").find_all("tr"):
print(row.find("td").text.strip())
return 0
if __name__ == "__main__":
import sys
sys.exit(main())
輸出:
OCYS
FL Rush
Jacksonville FC
Atlanta United
SSA
Miami Rush Kendall SC
IMG
Tampa Bay United
Weston FC
Chargers SC
South Florida FA
Solar SC
RISE SC
...

TA貢獻1808條經驗 獲得超4個贊
我認為問題出在表的標題上,它包含th元素而不是td元素。當您嘗試從空列表中檢索第一個元素時,它會導致范圍索引錯誤。嘗試添加長度檢查td:
for row in rows:
team = row.find_all('td')
if(len(team) > 0):
teamName = team[0].text.strip()
print(teamName)
它應該打印出團隊名稱。
添加回答
舉報