您在Network选项卡中看不到任何内容,因为数据存储在页面的<script>
个元素中.下面是一个如何解析它的示例:
import json
import requests
from bs4 import BeautifulSoup
def find_tracks(o):
if isinstance(o, dict):
if o.get("itemKind") == "trackLockup":
yield o["items"]
return
for v in o.values():
yield from find_tracks(v)
elif isinstance(o, list):
for v in o:
yield from find_tracks(v)
url = "https://music.apple.com/de/playlist/energy-euro-hot-30/pl.9b672a18307c4cd7ba1ece0106891868"
soup = BeautifulSoup(requests.get(url).content, "html.parser")
data = json.loads(soup.select_one("#serialized-server-data").text)
tracks = next(find_tracks(data))
# print(json.dumps(tracks, indent=4))
for track in tracks:
print(f'{track["title"]:<55} {track["artistName"]}')
打印:
Overdrive (feat. Norma Jean Martine) Ofenbach
Houdini Dua Lipa
Strangers Kenya Grace
When We Were Young (The Logical Song) David Guetta & Kim Petras
greedy Tate McRae
Gimme Love Sia
Lose Control Teddy Swims
Cynical twocolors, Safri Duo & Chris de Sarandy
Lovin On Me Jack Harlow
Si No Estás Iñigo Quintero
Paint The Town Red Doja Cat
Water Tyla
On My Love Zara Larsson & David Guetta
Is It Love Loreen
I'll Be There Robin Schulz, Rita Ora & Tiago PZK
Dreaming Marshmello, P!nk & Sting
American Town Ed Sheeran
Is It Over Now? (Taylor's Version) [From The Vault] Taylor Swift
Better Me Michael Schulte & R3HAB
Mwaki ZERB
Substitution (feat. Julian Perretta) Purple Disco Machine & Kungs
RUNAWAY OneRepublic
Blindside James Arthur
Dive Lost Frequencies & Tom Gregory
Tattoo Loreen
LOVE'n'TENDRESSE Eddy de Pretto
Prada cassö, RAYE & D-Block Europe
Never Give Up Puggy
Used To Be Young Miley Cyrus
Seasons Thirty Seconds to Mars