Cum să instalezi Beautiful Supp și să o folosești pentru proiecte de web scraping?

În era digitală actuală, caracterizată de volume mari de date, colectarea manuală a informațiilor a devenit un demers învechit. Disponibilitatea unui computer cu conexiune la internet pe fiecare birou a transformat web-ul într-o sursă colosală de date. Ca atare, metoda modernă, mai eficientă și rapidă de obținere a datelor este web scraping-ul. Iar când vorbim despre web scraping, Python oferă un instrument puternic, numit Beautiful Soup. În acest articol, vă voi ghida prin pașii de instalare a Beautiful Soup, pentru a putea începe explorarea web scraping-ului.

Înainte de a începe instalarea și utilizarea efectivă a Beautiful Soup, să vedem ce avantaje ne oferă această bibliotecă.

Ce reprezintă Beautiful Soup?

Să presupunem că sunteți implicat într-un studiu despre „impactul COVID asupra sănătății populației” și ați găsit câteva pagini web cu informații relevante. Ce faceți însă, dacă acestea nu oferă posibilitatea de a descărca datele cu un singur click? Aici intervine Beautiful Soup.

Beautiful Soup se numără printre bibliotecile Python esențiale pentru a extrage date de pe diverse site-uri web. Este deosebit de utilă pentru obținerea datelor din pagini HTML sau XML.

Leonard Richardson a conceput Beautiful Soup, cu scopul de a facilita accesul la informațiile din mediul online, în 2004. Contribuția sa la acest proiect continuă și în prezent. El anunță cu entuziasm fiecare nouă lansare a Beautiful Soup pe contul său de Twitter.

Deși Beautiful Soup pentru web scraping a fost dezvoltat inițial folosind Python 3.8, funcționează foarte bine atât cu Python 3, cât și cu versiuni mai vechi, cum ar fi Python 2.4.

Adesea, site-urile web utilizează protecție captcha pentru a-și proteja datele de instrumentele automatizate. În astfel de situații, câteva ajustări ale antetului „user-agent” din Beautiful Soup sau utilizarea API-urilor de rezolvare a captch-urilor pot simula un browser real, păcălind instrumentul de detectare.

Totuși, dacă timpul este limitat și aveți nevoie de o soluție rapidă și eficientă pentru web scraping, ar trebui să luați în considerare utilizarea unui API specializat. Acesta vă permite să obțineți datele dorite, furnizând doar adresa URL a paginii.

Dacă sunteți deja familiarizat cu programarea, utilizarea Beautiful Soup pentru web scraping nu va fi o provocare dificilă, datorită sintaxei sale intuitive pentru navigarea în paginile web și extragerea datelor în funcție de condiții specifice. În plus, este o bibliotecă accesibilă și pentru începători.

Deși Beautiful Soup nu este ideală pentru task-uri de scraping avansate, este foarte eficientă pentru extragerea datelor din fișiere scrise în limbaje de marcare.

Un alt avantaj al Beautiful Soup este documentația sa clară și detaliată, care facilitează învățarea și utilizarea bibliotecii.

Să vedem cum putem instala Beautiful Soup pe computerul dumneavoastră.

Cum se instalează Beautiful Soup pentru web scraping?

Pip – Un manager de pachete Python, dezvoltat în 2008, a devenit un instrument standard pentru dezvoltatorii care doresc să instaleze biblioteci sau dependențe Python.

Pip este inclus implicit în versiunile recente de Python. Așadar, dacă aveți instalată o versiune recentă de Python, sunteți gata de acțiune.

Deschideți linia de comandă (promptul de comandă) și introduceți următoarea comandă pip pentru a instala instantaneu Beautiful Soup:

pip install beautifulsoup4

Pe ecran, ar trebui să vedeți ceva similar cu imaginea de mai jos.

Asigurați-vă că ați actualizat programul de instalare PIP la cea mai recentă versiune, pentru a evita erorile comune.

Comanda pentru actualizarea programului de instalare pip la cea mai recentă versiune este:

pip install --upgrade pip

Am parcurs cu succes prima parte a acestui articol.

Acum că aveți instalat Beautiful Soup, haideți să vedem cum îl puteți folosi pentru web scraping.

Cum să importați și să utilizați Beautiful Soup pentru web scraping?

Pentru a importa Beautiful Soup în scriptul Python curent, introduceți următoarea comandă în IDE-ul dumneavoastră Python:

from bs4 import BeautifulSoup

Acum, Beautiful Soup este disponibilă în fișierul dumneavoastră Python și poate fi folosită pentru scraping.

Să analizăm un exemplu de cod, pentru a înțelege cum puteți extrage datele dorite cu Beautiful Soup.

Putem instrui Beautiful Soup să caute anumite etichete HTML pe site-ul sursă și să extragă datele prezente în acele etichete.

În acest exemplu, voi folosi marketwatch.com, un site care actualizează în timp real prețurile acțiunilor diferitelor companii. Vom extrage câteva date de pe acest site web, pentru a vă familiariza cu biblioteca Beautiful Soup.

Importați pachetul „requests”, care ne va permite să trimitem și să primim solicitări HTTP și „urllib”, pentru a încărca pagina web de la adresa sa URL.

from urllib.request import urlopen
import requests

Salvați link-ul paginii web într-o variabilă, pentru a-l putea accesa cu ușurință mai târziu.

url="https://www.marketwatch.com/investing/stock/amzn"

Următorul pas este să utilizați metoda „urlopen” din biblioteca „urllib”, pentru a stoca pagina HTML într-o variabilă. Introduceți adresa URL în funcția „urlopen” și salvați rezultatul într-o variabilă.

page = urlopen(url)

Creați un obiect Beautiful Soup și analizați pagina web dorită utilizând „html.parser”.

soup_obj = BeautifulSoup(page, 'html.parser')

Acum, întregul script HTML al paginii web vizate este stocat în variabila „soup_obj”.

Înainte de a continua, să analizăm codul sursă al paginii vizate, pentru a înțelege structura HTML și etichetele.

Dați click dreapta oriunde pe pagina web cu mouse-ul. Apoi veți găsi o opțiune de inspectare, similar cu cea afișată mai jos.

Faceți click pe inspectare, pentru a vizualiza codul sursă.

În codul sursă de mai sus, puteți găsi etichete, clase și detalii specifice despre fiecare element vizibil în interfața site-ului.

Metoda „find” din Beautiful Soup ne permite să căutăm etichetele HTML dorite și să extragem datele. Pentru aceasta, specificăm numele clasei și etichetele, pentru a extrage informații precise.

De exemplu, textul „Amazon.com Inc.” afișat pe pagina web are numele clasei: „company__name”, inclus în eticheta „h1”. Putem introduce aceste informații în metoda „find”, pentru a extrage fragmentul HTML relevant într-o variabilă.

name = soup_obj.find('h1', attrs={'class': 'company__name'})

Să afișăm scriptul HTML stocat în variabila „name”, precum și textul relevant pe ecran.

print(name)

print(name.text)

Puteți observa datele extrase afișate pe ecran.

Web Scraping de pe site-ul IMDb

Mulți dintre noi căutăm evaluări ale filmelor pe site-ul IMBb înainte de a alege ce să vizionăm. Acest exemplu vă va oferi o listă cu filme de top și vă va ajuta să vă familiarizați cu Beautiful Soup pentru web scraping.

Pasul 1: Importați bibliotecile Beautiful Soup și requests.

from bs4 import BeautifulSoup
import requests

Pasul 2: Atribuiți adresa URL pe care dorim să o analizăm unei variabile numite „url”, pentru a facilita accesul în cod.

Pachetul „requests” este folosit pentru a obține pagina HTML de la adresa URL.

url = requests.get('https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating')

Pasul 3: În următorul fragment de cod, vom analiza pagina HTML a adresei URL curente, pentru a crea un obiect de tip Beautiful Soup.

soup_obj = BeautifulSoup(url.text, 'html.parser')

Variabila „soup_obj” conține acum întregul script HTML al paginii web dorite, similar cu imaginea următoare.

Să analizăm codul sursă al paginii web, pentru a identifica scriptul HTML al datelor pe care dorim să le extragem.

Plasați cursorul pe elementul din pagina web pe care doriți să-l extrageți. Apoi, dați click dreapta și alegeți opțiunea de inspectare, pentru a vedea codul sursă al acelui element specific. Imaginile următoare vă vor ghida mai bine.

Lista cu clasa „lister-list” conține toate datele despre filme, cu subdiviziuni în etichete div succesive.

În scriptul HTML al fiecărui film, sub clasa „mod lista-element-avansat”, avem o etichetă „h3” care stochează numele filmului, poziția în clasament și anul lansării, așa cum se vede în imaginea de mai jos.

Notă: Metoda „find” din Beautiful Soup caută prima etichetă care se potrivește cu numele introdus. Spre deosebire de „find”, metoda „find_all” caută toate etichetele care corespund cu numele specificat.

Pasul 4: Puteți utiliza metodele „find” și „find_all” pentru a salva scriptul HTML al fiecărui film, poziția în clasament și anul, într-o variabilă de tip listă.

top_movies = soup_obj.find('div',attrs={'class': 'lister-list'}).find_all('h3')

Pasul 5: Parcurgeți lista de filme stocată în variabila: „top_movies” și extrageți numele, poziția în clasament și anul fiecărui film în format text, din scriptul HTML, folosind codul de mai jos.

for movie in top_movies:
    movi_name = movie.a.text
    rank = movie.span.text.rstrip('.')
    year = movie.find('span', attrs={'class': 'lister-item-year text-muted unbold'})
    year = year.text.strip('()')
    print(movi_name + " ", rank+ " ", year+ " ")

În imaginea de ieșire, veți putea observa lista de filme, cu numele, poziția în clasament și anul lansării.

Puteți exporta cu ușurință datele afișate într-o foaie de calcul Excel, folosind cod Python, și le puteți folosi pentru analiză ulterioară.

Concluzie

Acest articol vă ghidează în procesul de instalare a Beautiful Soup pentru web scraping. În plus, exemplele prezentate vă vor ajuta să începeți să folosiți Beautiful Soup.

Având în vedere interesul dumneavoastră în instalarea Beautiful Soup pentru web scraping, vă recomand să consultați acest ghid ușor de înțeles, pentru a afla mai multe despre web scraping folosind Python.