Is féidir le sonraí liosta seinnte Spotify a bheith úsáideach chun faisnéis a bhailiú faoi amhráin, ealaíontóirí, agus sonraí eile a bhaineann le rianta. Ní sholáthraíonn Spotify rochtain mhionsonraithe ar chuid de na sonraí gan eochair API, ach trí úsáid a bhaint as Playwright do Python, is féidir linn ábhar dinimiciúil a rochtain agus sonraí liosta seinnte a bhaint go díreach ó shuíomh gréasáin Spotify. Míníonn an t-alt seo conas Playwright a chur i bhfeidhm chun faisnéis cosúil le hainmneacha rianta, ainmneacha bannaí, naisc agus fad na rianta a bhaint as liostaí seinnte Spotify.
Chun tosú, suiteáil Playwright agus lxml chun ábhar dinimiciúil an leathanaigh agus parsáil HTML a láimhseáil:
pip install playwright
pip install lxml
Ansin, chun na brabhsálaithe Playwright a chumasú, bain úsáid as an ordú seo a leanas chun na dénártha brabhsálaí riachtanacha a íoslódáil:
playwright install
Leis seo curtha i bhfeidhm, táimid réidh chun sonraí Spotify a bhaint.
Luchtaítear ábhar Spotify go dinimiciúil, agus mar sin ní bhfaighidh úsáid requests nó leabharlanna simplí HTTP eile gach eolas a thaispeántar trí JavaScript. Is leabharlann uathoibrithe brabhsálaí é Playwright a ligeann dúinn idirghníomhú le suíomhanna gréasáin dinimiciúla amhail is dá mbeimis á mbrabhsáil go díreach, rud a chiallaíonn gur féidir linn fanacht go luchtóidh JavaScript sula ndéanaimid an scríobadh.
Tacaíonn Playwright freisin le cumraíocht seachfhreastalaí, rud a chuireann ar ár gcumas IPanna éagsúla a úsáid más gá chun teorainneacha rátaí nó srianta geografacha ar Spotify a sheachaint.
Thíos gheobhaidh tú treoir mhionsonraithe, céim ar chéim ar an bpróiseas scríobtha, agus samplaí cód san áireamh chun tuiscint níos soiléire agus níos amhairc a fháil ar an bpróiseas.
Tosaíonn an fheidhm fetch_html_content timpeallacht Playwright, seolann sí brabhsálaí, agus téann sí chuig URL liosta seinnte Spotify. Anseo, socraímid headless=False ionas go mbeidh comhéadan an bhrabhsálaí le feiceáil (úsáideach le haghaidh dífhabhtaithe); le haghaidh tascanna uathoibrithe, cuir `True` air chun an feidhmíocht a fheabhsú.
Fanann an rogha wait_until='networkidle' go dtí go mbeidh gníomhaíocht líonra cobhsaí sula ndéantar ábhar na leathanaigh a ghabháil, rud a chinntíonn go luchtófar gach eilimint i gceart.
from playwright.async_api import async_playwright
async def fetch_html_content(playlist_url):
async with async_playwright() as p:
# Seoladh brabhsálaí le seachfhreastalaí más gá
browser = await p.chromium.launch(headless=False)
page = await browser.new_page()
# Téigh go dtí an URL
await page.goto(playlist_url, wait_until='networkidle')
# Lig am do ghníomhaíocht líonra socrú a dhéanamh
await page.wait_for_timeout(3000)
# Ábhar leathanach a ghabháil
page_content = await page.content()
# Dún an brabhsálaí
await browser.close()
return page_content
Chun seachfhreastalaí a úsáid le fíordheimhniú seoladh IP sa drámadóir, cumraigh an fheidhm seolta mar seo a leanas:
browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-server:port"})
Cuirfidh sé seo iarratais ar an mbealach tríd an seachfhreastalaí sonraithe, ag cur do IP bunaidh i leataobh agus ag cuidiú le srianta scríobtha féideartha a sheachaint.
Le feidhm lxml, cruthaímid parsálaí don ábhar HTML a fhaightear. Ligeann sé seo dúinn sonraí sonracha a aimsiú agus a bhaint amach ag baint úsáide as abairtí XPath.
from lxml.html import fromstring
page_content = await fetch_html_content('https link')
parser = fromstring(page_content)
Le roghnóirí XPath, bailímid na sonraí seo a leanas do gach rian sa seinmliosta:
track_names = parser.xpath('//div[@data-testid="tracklist-row"]//a[@data-testid="internal-track-link"]/div/text()')
track_urls = parser.xpath('//div[@data-testid="tracklist-row"]//a[@data-testid="internal-track-link"]/@href')
track_urls_with_domain = [f"https://open.spotify.com/{url}" for url in track_urls]
artist_names = parser.xpath('//div[@data-testid="tracklist-row"]//div[@data-encore-id="text"]/a/text()')
artist_urls = parser.xpath('//div[@data-testid="tracklist-row"]//div[@data-encore-id="text"]/a/@href')
artist_urls_with_domain = [f"https://open.spotify.com/{url}" for url in artist_urls]
track_durations = parser.xpath('//div[@data-testid="tracklist-row"]//div[@class="PAqIqZXvse_3h6sDVxU0"]/div/text()')
Críochnaítear na liostaí URL leis an bhfearann Spotify chun naisc láncháilithe a chruthú.
Tar éis sonraí a bhailiú, scríobhaimid é i gcomhad CSV. I ngach sraith sa chomhad tá an t -ainm rianta, an URL rian, an t -ainm ealaíontóra, an t -ealaíontóir url, agus an ré rian.
import csv
rows = zip(track_names, track_urls_with_domain, artist_names, artist_urls_with_domain, track_durations)
csv_filename = "spotify_playlist.csv"
with open(csv_filename, mode='w', newline='') as file:
writer = csv.writer(file)
# Scríobh ceanntásca
writer.writerow(["track_names", "track_urls", "artist_names", "artist_urls", "track_durations"])
# Scríobh sraitheanna
writer.writerows(rows)
print(f"Data successfully written to {csv_filename}")
Cruthaíonn sé seo comhad CSV dea-struchtúrtha atá éasca le hanailís agus le húsáid in iarratais bhreise.
Seo an cód iomlán, ag comhcheangal gach céim le haghaidh próiseas scrapála Spotify sruthlínithe:
from playwright.async_api import async_playwright
from lxml.html import fromstring
import csv
async def fetch_html_content(playlist_url):
async with async_playwright() as p:
# Brabhsálaí Seoladh, le rogha seachfhreastalaí más gá
browser = await p.chromium.launch(headless=False, proxy={"server": "http://your-proxy-server:port", "username": "username", "password": "password"})
page = await browser.new_page()
# Téigh go dtí an URL
await page.goto(playlist_url, wait_until='networkidle')
# Fan go socróidh aon ghníomhaíocht líonra
await page.wait_for_timeout(3000)
# Ábhar leathanach a ghabháil
page_content = await page.content()
# Dún an brabhsálaí
await browser.close()
return page_content
page_content = asyncio.run(fetch_html_content('https link'))
parser = fromstring(page_content)
# Sonraí Sliocht
track_names = parser.xpath('//div[@data-testid="tracklist-row"]//a[@data-testid="internal-track-link"]/div/text()')
track_urls = parser.xpath('//div[@data-testid="tracklist-row"]//a[@data-testid="internal-track-link"]/@href')
track_urls_with_domain = [f"https://open.spotify.com/{url}" for url in track_urls]
artist_names = parser.xpath('//div[@data-testid="tracklist-row"]//div[@data-encore-id="text"]/a/text()')
artist_urls = parser.xpath('//div[@data-testid="tracklist-row"]//div[@data-encore-id="text"]/a/@href')
artist_urls_with_domain = [f"https://open.spotify.com/{url}" for url in artist_urls]
track_durations = parser.xpath('//div[@data-testid="tracklist-row"]//div[@class="PAqIqZXvse_3h6sDVxU0"]/div/text()')
# Scríobh chuig CSV
rows = zip(track_names, track_urls_with_domain, artist_names, artist_urls_with_domain, track_durations)
csv_filename = "spotify_playlist.csv"
with open(csv_filename, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(["track_names", "track_urls", "artist_names", "artist_urls", "track_durations"])
writer.writerows(rows)
print(f"Data successfully written to {csv_filename}")
Is féidir sonraí liosta seinnte Spotify a bhailiú ag úsáid Python le Playwright, rud a chuireann rochtain ar ábhar dinimiciúil ar fáil chun faisnéis faoi rianta a bhaint agus a anailísiú. Trí Playwright a chumrú le seachfhreastalaithe, is féidir linn teorainneacha rátaí a láimhseáil, ag cruthú slí iontaofa chun sonraí liostaí seinnte a bhailiú. Osclaíonn an socrú seo féidearthachtaí le haghaidh anailíse mionsonraithe agus is féidir é a chur in oiriúint go héasca do chineálacha eile ábhar Spotify.
Tuairimí: 0