Conas Sonraí Spotify a Scrape Ag baint úsáide as Python

Tuairimí: 0

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.

Riachtanais agus suiteáil

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.

Próiseas Scríobtha Spotify: Treoir Céim ar Chéim

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.

Céim 1. Feidhm a chur ar bun chun ábhar HTML a fháil

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.

Céim 2. An Ábhar HTML a pharsáil

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)

Céim 3. Faisnéis Rianta a Bhaint Amach

Le roghnóirí XPath, bailímid na sonraí seo a leanas do gach rian sa seinmliosta:

  1. Ainmneacha rian;
  2. URLanna a rianú;
  3. Ainmneacha ealaíontóra;
  4. URLS ealaíontóra;
  5. Tréimhsí rianaithe.

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ú.

Céim 4. Sonraí a shábháil ar chomhad CSV

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.

Comhlánaigh sampla an chóid le tacaíocht seachfhreastalaí

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 tuairimí