我正在尝试获取之前在沙发得分上为任何球队进行的比赛的 href,让我们以利物浦为例 (https://www.sofascore.com/team/football/liverpool/44)。我想获取他们之前 5 场比赛的 href,但其中一场比赛显示在以下代码中:
import requests
from bs4 import BeautifulSoup, SoupStrainer
link = "https://www.sofascore.com/team/football/liverpool/44"
res = requests.get(link)
soup = BeautifulSoup(res.content, 'html.parser')
soup = soup.find('main')
for link in BeautifulSoup(res.content, "html.parser", parse_only=SoupStrainer('a', href=True)):
print(link['href'])
显示了一些 href,但不是我需要的。
答案 0 :(得分:1)
您看到的数据是通过 Ajax 从外部源加载的。您可以使用 requests
模块模拟此请求:
import json
import requests
# '44' is the ID from your URL:
api_url = "https://api.sofascore.com/api/v1/team/44/events/last/0"
data = requests.get(api_url).json()
# uncomment this to print all data
# print(json.dumps(data, indent=4))
for e in data["events"]:
if e["status"]["code"] != 100:
continue
event_url = "https://www.sofascore.com/" + e["slug"] + "/" + e["customId"]
print(
"{:>25} - {:<25} {:<2}:{:>2} {:<70}".format(
e["homeTeam"]["name"],
e["awayTeam"]["name"],
e["homeScore"]["current"],
e["awayScore"]["current"],
event_url,
)
)
打印:
Newcastle United - Liverpool 0 : 0 https://www.sofascore.com/liverpool-newcastle-united/OU
Southampton - Liverpool 1 : 0 https://www.sofascore.com/southampton-liverpool/UsV
Aston Villa - Liverpool 1 : 4 https://www.sofascore.com/liverpool-aston-villa/PU
Liverpool - Manchester United 0 : 0 https://www.sofascore.com/liverpool-manchester-united/KU
Liverpool - Burnley 0 : 1 https://www.sofascore.com/burnley-liverpool/gsU
Manchester United - Liverpool 3 : 2 https://www.sofascore.com/liverpool-manchester-united/KU
Tottenham - Liverpool 1 : 3 https://www.sofascore.com/liverpool-tottenham/IsU
West Ham United - Liverpool 1 : 3 https://www.sofascore.com/liverpool-west-ham-united/MU
Liverpool - Brighton & Hove Albion 0 : 1 https://www.sofascore.com/liverpool-brighton-and-hove-albion/FsU
Liverpool - Manchester City 1 : 4 https://www.sofascore.com/liverpool-manchester-city/rU
Leicester City - Liverpool 3 : 1 https://www.sofascore.com/liverpool-leicester-city/GU
RB Leipzig - Liverpool 0 : 2 https://www.sofascore.com/liverpool-rb-leipzig/UskCo
Liverpool - Everton 0 : 2 https://www.sofascore.com/everton-liverpool/UsY
Sheffield United - Liverpool 0 : 2 https://www.sofascore.com/liverpool-sheffield-united/psU
Liverpool - Chelsea 0 : 1 https://www.sofascore.com/liverpool-chelsea/NsU
Liverpool - Fulham 0 : 1 https://www.sofascore.com/liverpool-fulham/TsU
Liverpool - RB Leipzig 2 : 0 https://www.sofascore.com/liverpool-rb-leipzig/UskCo
Wolverhampton - Liverpool 0 : 1 https://www.sofascore.com/liverpool-wolverhampton/dsU
Arsenal - Liverpool 0 : 3 https://www.sofascore.com/liverpool-arsenal/HQfh
Real Madrid - Liverpool 3 : 1 https://www.sofascore.com/liverpool-real-madrid/UsEgb
Liverpool - Aston Villa 2 : 1 https://www.sofascore.com/liverpool-aston-villa/PU
Liverpool - Real Madrid 0 : 0 https://www.sofascore.com/liverpool-real-madrid/UsEgb
Leeds United - Liverpool 1 : 1 https://www.sofascore.com/liverpool-leeds-united/JsU
Liverpool - Newcastle United 1 : 1 https://www.sofascore.com/liverpool-newcastle-united/OU
Liverpool - Southampton 2 : 0 https://www.sofascore.com/southampton-liverpool/UsV
Manchester United - Liverpool 2 : 4 https://www.sofascore.com/liverpool-manchester-united/KU
West Bromwich Albion - Liverpool 1 : 2 https://www.sofascore.com/west-bromwich-albion-liverpool/iU
Burnley - Liverpool 0 : 3 https://www.sofascore.com/burnley-liverpool/gsU
Liverpool - Crystal Palace 2 : 0 https://www.sofascore.com/crystal-palace-liverpool/hsU