Răzuiți un site web cu acest tutorial frumos pentru supă Python

Beautiful Soup este o bibliotecă Python open-source. Utilizează parsere de navigare pentru a răzui conținutul fișierelor XML și HTML. Aveți nevoie de date pentru mai multe scopuri analitice. Cu toate acestea, dacă sunteți nou în Python și web scraping, biblioteca Python's Beautiful Soup merită încercată pentru un proiect de web scraping.

Cu biblioteca open-source Beautiful Soup de la Python, puteți obține date prin răzuirea oricărei părți sau element a unei pagini web cu control maxim asupra procesului. În acest articol, ne uităm la modul în care puteți folosi Beautiful Supp pentru a răzui un site web.

Cum să instalați Beautiful Supp și să începeți cu ea

Înainte de a continua, în acest articol tutorial Beautiful Soup, vom folosi Python 3 și beautifulsoup4 , cea mai recentă versiune a Beautiful Soup. Asigurați-vă că creați un mediu virtual Python pentru a vă izola proiectul și pachetele sale de cele de pe mașina dvs. locală.

Pentru a începe, trebuie să instalați biblioteca Beautiful Soup în mediul dumneavoastră virtual. Beautiful Soup este disponibil ca pachet PyPi pentru toate sistemele de operare, așa că o puteți instala cu comanda pip install beautifulsoup4 prin intermediul terminalului.

Cu toate acestea, dacă sunteți pe Debian sau Linux, comanda de mai sus funcționează în continuare, dar o puteți instala cu managerul de pachete rulând apt-get install python3-bs4 .

Beautiful Soup nu răzuiește direct adresele URL. Funcționează numai cu fișiere HTML sau XML gata făcute. Asta înseamnă că nu poți trece o adresă URL direct în ea. Pentru a rezolva această problemă, trebuie să obțineți adresa URL a site-ului țintă cu biblioteca de solicitări a lui Python înainte de a o alimenta în Beautiful Soup.

Pentru a face acea bibliotecă disponibilă pentru scraperul dvs., rulați comanda pip install requests prin terminal.

Pentru a utiliza biblioteca de analiză XML, rulați pip install lxml pentru ao instala.

Inspectați pagina web pe care doriți să o curățați

Înainte de a elimina orice site web cu care nu sunteți familiarizat, o bună practică este să inspectați elementele acestuia. Puteți face acest lucru prin comutarea browserului în modul dezvoltator. Este destul de ușor să utilizați Chrome DevTools dacă utilizați Google Chrome.

Cu toate acestea, este necesar să inspectați o pagină web pentru a afla mai multe despre etichetele, atributele, clasele și ID-urile sale HTML. Acest lucru expune elementele de bază ale unei pagini web și tipurile de conținut ale acesteia.

De asemenea, vă ajută să dezvoltați cele mai bune strategii pe care le puteți utiliza pentru a obține datele exacte pe care le doriți de la un site web și cum le puteți obține.

Cum să răzuiți datele unui site web cu supă frumoasă

Acum că aveți totul pregătit și pregătit, deschideți un editor de cod preferat și creați un nou fișier Python, dându-i un nume ales. Cu toate acestea, puteți folosi și IDE-uri bazate pe web, cum ar fi Jupyter Notebook, dacă nu sunteți familiarizat cu rularea Python prin linia de comandă.

Apoi, importați bibliotecile necesare:

from bs4 import BeautifulSoup import requests

În primul rând, să vedem cum funcționează biblioteca de solicitări:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') print(website)

Când rulați codul de mai sus, acesta returnează o stare 200, indicând că solicitarea dvs. a reușit. În caz contrar, obțineți o stare 400 sau alte stări de eroare care indică o solicitare GET eșuată.

Nu uitați să înlocuiți întotdeauna adresa URL a site-ului web din paranteză cu adresa URL țintă.

Odată ce obțineți site-ul web cu cererea de obținere , îl transmiteți apoi către Beautiful Soup, care acum poate citi conținutul ca fișiere HTML sau XML utilizând analizatorul XML sau HTML încorporat, în funcție de formatul ales.

Aruncă o privire la următorul fragment de cod pentru a vedea cum să faci asta cu parserul HTML:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') soup = BeautifulSoup(website.content, 'html.parser') print(soup)

Codul de mai sus returnează întregul DOM al unei pagini web cu conținutul acesteia.

De asemenea, puteți obține o versiune mai aliniată a DOM-ului folosind metoda pretify . Puteți încerca acest lucru pentru a vedea rezultatul său:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.prettify())

De asemenea, puteți obține conținutul pur al unei pagini web fără a încărca elementul acesteia cu metoda .text :

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.text)

Cum să răzuiești conținutul unei pagini web după numele etichetei

De asemenea, puteți răzui conținutul într-o anumită etichetă cu Beautiful Soup. Pentru a face acest lucru, trebuie să includeți numele etichetei țintă în cererea dvs. de raclere Beautiful Soup.

De exemplu, să vedem cum puteți obține conținutul din etichetele h2 ale unei pagini web.

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.h2)

În fragmentul de cod de mai sus, soup.h2 returnează primul element h2 al paginii web și ignoră restul. Pentru a încărca toate elementele h2 , puteți folosi funcția încorporată find_all și bucla for din Python:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups)

Acest bloc de cod returnează toate elementele h2 și conținutul acestora. Cu toate acestea, puteți obține conținutul fără a încărca eticheta folosind metoda .string :

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups.string)

Puteți utiliza această metodă pentru orice etichetă HTML. Tot ce trebuie să faceți este să înlocuiți eticheta h2 cu cea care vă place.

Cu toate acestea, puteți, de asemenea, să răzuiți mai multe etichete prin trecerea unei liste de etichete în metoda find_all . De exemplu, blocul de cod de mai jos julituri conținutul de o , h2 și titlu tag - uri:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') tags = soup.find_all(['a', 'h2', 'title']) for soups in tags: print(soups.string)

Cum să răzuiți o pagină web folosind ID-ul și numele clasei

După ce inspectați un site web cu DevTools, vă permite să aflați mai multe despre atributele id și clasa care dețin fiecare element în DOM-ul său. Odată ce aveți acea informație, puteți răzui pagina web folosind această metodă. Este util atunci când conținutul unei componente țintă trece în buclă din baza de date.

Puteți folosi metoda find pentru id și class scrapers. Spre deosebire de metoda find_all care returnează un obiect iterabil, metoda find funcționează pe o singură țintă, neiterabilă, care este id - ul în acest caz. Deci, nu trebuie să utilizați bucla for cu el.

Să ne uităm la un exemplu despre cum puteți răzui conținutul unei pagini de mai jos folosind id-ul:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') id = soup.find(id = 'enter the target id here') print(id.text)

Pentru a face acest lucru pentru un nume de clasă, înlocuiți id - ul cu class . Cu toate acestea, scrierea clasei duce direct la confuzie de sintaxă, deoarece Python o vede ca un cuvânt cheie. Pentru a ocoli această eroare, trebuie să scrieți un caracter de subliniere în fața clasei astfel: class_ .

În esență, linia care conține id-ul devine:

my_classes = soup.find(class_ = 'enter the target class name here') print(my_classes.text)

Cu toate acestea, puteți, de asemenea, să răzuiați o pagină web apelând un anumit nume de etichetă cu id-ul sau clasa corespunzătoare:

data = soup.find_all('div', class_ = 'enter the target class name here') print(data)

Cum să faci o racletă reutilizabilă cu supă frumoasă

Puteți crea o clasă și puteți pune tot codul anterior împreună într-o funcție din acea clasă pentru a face un răzuitor reutilizabil care primește conținutul unor etichete și ID-urile acestora. Putem face acest lucru prin crearea unei funcții care acceptă cinci argumente: o adresă URL, două nume de etichete și ID-urile sau clasele corespunzătoare.

Să presupunem că doriți să răzuiți prețul cămășilor de pe un site de comerț electronic. Exemplul de clasă scraper de mai jos extrage etichetele de preț și cămăși cu ID-urile sau clasele corespunzătoare și apoi le returnează ca un cadru de date Pandas cu „Preț” și Shirt_name ca nume de coloană.

Asigurați-vă că instalați pip panda prin terminal dacă nu ați făcut-o deja.

import pandas as pd class scrapeit: try: def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None): if not (website and tag1 and id1 and tag2 and id2)==None: try: page = requests.get(website) soup = BeautifulSoup(page.content, 'html.parser') infotag1 = soup.find_all(tag1, id1) infotag2 = soup.find_all(tag2, id2) priced = [prices.text for prices in infotag1] shirt = [shirts.text for shirts in infotag2] data = { 'Price':priced, 'Shirt_name':shirt} info = pd.DataFrame(data, columns=['Price', 'Shirt_name']) print(info) except: print('Not successful') else: print('Oops! Please enter a website, two tags and thier corresponding ids') except: print('Not successful!')

Scraperul pe care tocmai l-ați făcut este un modul reutilizabil și îl puteți importa și utiliza într-un alt fișier Python. Pentru a apela funcția scrape din clasa sa, utilizați scrapeit.scrape('Adresa URL a site-ului web', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Dacă nu furnizați adresa URL și alți parametri, declarația else vă solicită să faceți acest lucru.

Pentru a utiliza acel scaper într-un alt fișier Python, îl puteți importa astfel:

from scraper_module import scrapeit scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

Notă: scraper_module este numele fișierului Python care conține clasa scraper.

De asemenea, puteți verifica documentația Beautiful Soup dacă doriți să vă aprofundați în modul în care o puteți folosi cât mai bine.

Beautiful Supp este un instrument valoros de răzuire web

Beautiful Soup este un răzuitor de ecran Python puternic, care vă oferă control asupra modului în care sunt transmise datele în timpul răzuirii. Este un instrument de afaceri valoros, deoarece vă poate oferi acces la datele web ale concurenței, cum ar fi prețurile, tendințele pieței și multe altele.

Deși am creat un răzuitor de etichete în acest articol, puteți totuși să vă jucați cu această bibliotecă Python puternică pentru a crea instrumente de scraping mai utile.


Cum se calculează valoarea nCr

Cum se calculează valoarea nCr

Combinația este un concept matematic. Se referă la aranjarea mai multor obiecte în care ordinea lor este irelevantă. O formulă de bază descrie numărul de combinații valide.

Cum să scrieți și să compilați primul cod de soliditate

Cum să scrieți și să compilați primul cod de soliditate

Solidity este limbajul de programare folosit de contractele inteligente pe blockchain-ul Ethereum. Este un limbaj de programare tip static, orientat pe obiecte.

SQL vs. NoSQL: Care este cea mai bună bază de date pentru următorul tău proiect?

SQL vs. NoSQL: Care este cea mai bună bază de date pentru următorul tău proiect?

SQL vs. NoSQL: Care este cea mai bună bază de date pentru următorul tău proiect?

Cum să găsiți cuburi și pătrate perfecte cu N cifre folosind Python, C++ și JavaScript

Cum să găsiți cuburi și pătrate perfecte cu N cifre folosind Python, C++ și JavaScript

Mulți programatori iubesc să rezolve probleme matematice dificile folosind cod. Ajută la ascuțirea minții și la îmbunătățirea abilităților de rezolvare a problemelor. În acest articol, veți învăța cum să găsiți cele mai mici și mai mari pătrate și cuburi perfecte cu n cifre folosind Python, C++ și JavaScript. Fiecare exemplu conține, de asemenea, eșantion de ieșire pentru mai multe valori diferite.

Cum să utilizați Python ca calculator în linia de comandă

Cum să utilizați Python ca calculator în linia de comandă

În timp ce puteți utiliza un calculator grafic pe computer, interpretul limbajului de programare Python se poate dubla ca un calculator de birou. Este o glumă atât de populară în comunitatea Python, încât este menționată în tutorialul oficial. Iată cum puteți utiliza Python ca calculator.

Cum să încorporați tweet-uri în postările dvs. WordPress

Cum să încorporați tweet-uri în postările dvs. WordPress

Încorporarea serviciilor terță parte în postările dvs. WordPress este o modalitate interesantă de a captiva interesul vizitatorului. Conținutul încorporat oferă, de asemenea, indicii vizuale care facilitează scanarea. WordPress a simplificat adăugarea acestui tip de conținut.

Începeți cu Jupyter Notebook: Un tutorial

Începeți cu Jupyter Notebook: Un tutorial

Dacă sunteți un cercetător de date aspirant care lucrează cu Python sau R, trebuie să știți cum să utilizați Jupyter Notebook. Este un IDE open-source și bazat pe server pentru manipularea datelor, partajarea codului live, precum și gestionarea fluxului de lucru pentru știința datelor.

Codarea nu este pentru toată lumea: 9 joburi tehnologice pe care le puteți obține fără ea

Codarea nu este pentru toată lumea: 9 joburi tehnologice pe care le puteți obține fără ea

Tehnologia este, fără îndoială, industria viitorului. Dacă ești unul dintre milioanele de tineri adulți pe cale să se arunce în prima etapă a carierei tale, s-ar putea să te întrebi ce să faci dacă nu-ți place codificarea.

7 comenzi vitale pentru a începe cu Python pentru începători

7 comenzi vitale pentru a începe cu Python pentru începători

Învățarea unui nou limbaj de programare, cum ar fi Python, devine fără efort dacă aveți o foaie de parcurs cuprinzătoare care detaliază conceptele pe care să le învățați ca începător și cum să progresați mai departe pentru a atinge următoarea etapă. Chiar și programatorii intermediari ar trebui să își perfecționeze frecvent elementele de bază pentru a construi o bază solidă pentru ei înșiși.

Prima ta aplicație web ASP.NET: Cum să începeți

Prima ta aplicație web ASP.NET: Cum să începeți

ASP.NET este cadrul multiplatform gratuit al Microsoft pentru crearea de aplicații și servicii web. Platforma ASP.NET este o extensie a .NET, o platformă de dezvoltator de instrumente, limbaje de programare și biblioteci utilizate pentru a construi diferite aplicații.

Cele mai bune 9 alternative Docker pentru managementul containerelor

Cele mai bune 9 alternative Docker pentru managementul containerelor

Containerele sunt extrem de benefice pentru dezvoltarea, implementarea și gestionarea software-ului într-un mediu virtual. Docker este util în procesul de containerizare, dar nu este singura platformă din jur. Dacă sunteți în căutarea unor alternative la Docker, nu căutați mai departe. Această listă prezintă câteva alternative Docker eficiente și bogate în funcții de utilizat în următorul proiect.

Este ARCore sau ARKit mai bun pentru a crea experiențe de realitate augmentată?

Este ARCore sau ARKit mai bun pentru a crea experiențe de realitate augmentată?

Unele dintre cele mai discutate aplicații și experiențe mobile din zilele noastre utilizează tehnologia de realitate augmentată. În timp ce unele dintre aceste experiențe pot funcționa practic pe orice dispozitiv mobil, altele funcționează doar pe modele mai noi și mai scumpe. Dezvoltarea și utilizarea acestor experiențe mai robuste necesită ARCore și ARKit.

Cum se creează o nouă ramură în Git

Cum se creează o nouă ramură în Git

Ramurile sunt esențiale pentru conceptul de control al versiunilor în programare și Git în special. Acest articol de pornire vă spune ce este o ramură și cum să creați una folosind o serie de instrumente diferite.

Cum să utilizați instrucțiunea Python if

Cum să utilizați instrucțiunea Python if

Declarația if este forța motrice a programării logice. Ca rezultat, o mai bună înțelegere a Python-ului este un plus semnificativ la abilitățile dumneavoastră de programare Python.

Top 5 insigne care vă vor supraîncărca depozitul GitHub

Top 5 insigne care vă vor supraîncărca depozitul GitHub

Insignele GitHub pot spori lizibilitatea unui depozit, oferind utilizatorilor o modalitate rapidă de a captura valorile depozitului. Insignele pot fi încorporate în README.md pentru a clarifica importanța și necesitatea proiectului pentru alți dezvoltatori. Drept urmare, cititorii își fac o idee foarte rapidă despre depozit, verificând insignele atașate.

Noțiuni introductive cu Redis și PHP pentru stocarea rapidă a datelor

Noțiuni introductive cu Redis și PHP pentru stocarea rapidă a datelor

Popularul motor de stocare Redis este un instrument excelent și obligatoriu în orice arsenal de dezvoltatori de software. Motorul de stocare în memorie permite stocarea și recuperarea datelor extraordinar de rapide, până la 32 de milioane de interogări pe secundă, făcându-l o completare principală pentru orice motor major de baze de date.

Ce este WYSIWYG?

Ce este WYSIWYG?

O parte din magia dezvoltării software are loc atunci când liniile de cod alchimizează în mai mult decât suma părților lor. Veți descoperi că aveți nevoie de o anumită vizualizare creativă atunci când încercați să construiți abstract în acest fel. Acest lucru poate fi valabil pentru procesarea de text sau design web, la fel ca și pentru programare.

Cum se instalează .NET Framework versiunea 3.5 pe Windows 10

Cum se instalează .NET Framework versiunea 3.5 pe Windows 10

Ca utilizator de Windows, probabil că ați întâlnit cel puțin o dată cuvintele .NET Framework. Este un cadru software dezvoltat de Microsoft care vă permite să construiți și să rulați programe C#, C++, F# și Visual Basic. Cea mai recentă versiune .NET este 4.8, dar este posibil ca computerul să aibă nevoie de o versiune mai veche de .NET (cum ar fi .NET 3.5) pentru a rula unele aplicații.

WordPress vs. Wix: diferențele cheie

WordPress vs. Wix: diferențele cheie

Te confrunți adesea cu dilema clasică în timp ce construiești un site web pentru tine sau afacerea ta. WordPress vs. Wix — pe care să-l alegi și care ar fi cea mai bună alegere pentru tine?

Cele mai bune 10 distribuții Linux pentru dezvoltatori

Cele mai bune 10 distribuții Linux pentru dezvoltatori

În timp ce Linux ar putea să nu fie sistemul de operare preferat pentru utilizatorii ocazionali, este alegerea preferată pentru majoritatea dezvoltatorilor și programatorilor. Linux este un sistem de operare mai practic care a fost conceput în mod explicit ținând cont de programare și dezvoltatori.

Cum se calculează valoarea nCr

Cum se calculează valoarea nCr

Combinația este un concept matematic. Se referă la aranjarea mai multor obiecte în care ordinea lor este irelevantă. O formulă de bază descrie numărul de combinații valide.

Cum să scrieți și să compilați primul cod de soliditate

Cum să scrieți și să compilați primul cod de soliditate

Solidity este limbajul de programare folosit de contractele inteligente pe blockchain-ul Ethereum. Este un limbaj de programare tip static, orientat pe obiecte.

SQL vs. NoSQL: Care este cea mai bună bază de date pentru următorul tău proiect?

SQL vs. NoSQL: Care este cea mai bună bază de date pentru următorul tău proiect?

SQL vs. NoSQL: Care este cea mai bună bază de date pentru următorul tău proiect?

Cum să găsiți cuburi și pătrate perfecte cu N cifre folosind Python, C++ și JavaScript

Cum să găsiți cuburi și pătrate perfecte cu N cifre folosind Python, C++ și JavaScript

Mulți programatori iubesc să rezolve probleme matematice dificile folosind cod. Ajută la ascuțirea minții și la îmbunătățirea abilităților de rezolvare a problemelor. În acest articol, veți învăța cum să găsiți cele mai mici și mai mari pătrate și cuburi perfecte cu n cifre folosind Python, C++ și JavaScript. Fiecare exemplu conține, de asemenea, eșantion de ieșire pentru mai multe valori diferite.

Cum să utilizați Python ca calculator în linia de comandă

Cum să utilizați Python ca calculator în linia de comandă

În timp ce puteți utiliza un calculator grafic pe computer, interpretul limbajului de programare Python se poate dubla ca un calculator de birou. Este o glumă atât de populară în comunitatea Python, încât este menționată în tutorialul oficial. Iată cum puteți utiliza Python ca calculator.

Cum să încorporați tweet-uri în postările dvs. WordPress

Cum să încorporați tweet-uri în postările dvs. WordPress

Încorporarea serviciilor terță parte în postările dvs. WordPress este o modalitate interesantă de a captiva interesul vizitatorului. Conținutul încorporat oferă, de asemenea, indicii vizuale care facilitează scanarea. WordPress a simplificat adăugarea acestui tip de conținut.

Începeți cu Jupyter Notebook: Un tutorial

Începeți cu Jupyter Notebook: Un tutorial

Dacă sunteți un cercetător de date aspirant care lucrează cu Python sau R, trebuie să știți cum să utilizați Jupyter Notebook. Este un IDE open-source și bazat pe server pentru manipularea datelor, partajarea codului live, precum și gestionarea fluxului de lucru pentru știința datelor.

Codarea nu este pentru toată lumea: 9 joburi tehnologice pe care le puteți obține fără ea

Codarea nu este pentru toată lumea: 9 joburi tehnologice pe care le puteți obține fără ea

Tehnologia este, fără îndoială, industria viitorului. Dacă ești unul dintre milioanele de tineri adulți pe cale să se arunce în prima etapă a carierei tale, s-ar putea să te întrebi ce să faci dacă nu-ți place codificarea.

7 comenzi vitale pentru a începe cu Python pentru începători

7 comenzi vitale pentru a începe cu Python pentru începători

Învățarea unui nou limbaj de programare, cum ar fi Python, devine fără efort dacă aveți o foaie de parcurs cuprinzătoare care detaliază conceptele pe care să le învățați ca începător și cum să progresați mai departe pentru a atinge următoarea etapă. Chiar și programatorii intermediari ar trebui să își perfecționeze frecvent elementele de bază pentru a construi o bază solidă pentru ei înșiși.

Prima ta aplicație web ASP.NET: Cum să începeți

Prima ta aplicație web ASP.NET: Cum să începeți

ASP.NET este cadrul multiplatform gratuit al Microsoft pentru crearea de aplicații și servicii web. Platforma ASP.NET este o extensie a .NET, o platformă de dezvoltator de instrumente, limbaje de programare și biblioteci utilizate pentru a construi diferite aplicații.