Doriți să învățați web scraping cu Python, dar sunteți confuz dacă să utilizați Beautiful Soup, Selenium sau Scrapy pentru următorul dvs. proiect? Deși toate aceste biblioteci și cadre Python sunt puternice în sine, ele nu se potrivesc toate nevoile de web scraping și, prin urmare, este important să știți ce instrument ar trebui să utilizați pentru un anumit loc de munca.
Să aruncăm o privire la diferențele dintre Beautiful Soup, Scrapy și Selenium, astfel încât să puteți lua o decizie înțeleaptă înainte de a începe următorul proiect Python web scraping.
1. Ușurință în utilizare
Dacă ești începător, prima ta cerință ar fi o bibliotecă ușor de învățat și de utilizat. Beautiful Soup vă oferă toate instrumentele rudimentare de care aveți nevoie pentru a răzui web și este mai ales util pentru persoanele care au o experiență minimă cu Python, dar care doresc să dea la bază cu web răzuire.
Singura avertizare este că, datorită simplității sale, Beautiful Soup nu este la fel de puternică în comparație cu Scrapy sau Selenium. Programatorii cu experiență în dezvoltare pot stăpâni cu ușurință atât Scrapy, cât și Selenium, dar pentru începători, Primul proiect poate dura mult timp pentru a construi dacă aleg să meargă cu aceste cadre în loc de Beautiful Supă.
Pentru a răzui conținutul etichetei de titlu pe example.com folosind Beautiful Soup, ați folosi următorul cod:
url = "https://example.com/"
res = requests.get (url).text
supa = BeautifulSoup (res, 'html.parser')
titlu = supa.găsește("titlu").text
imprimare(titlu)
Pentru a obține rezultate similare folosind seleniu, ați scrie:
url = "https://example.com"
driver = webdriver. Crom("cale/către/chromedriver")
conducător auto.obține(url)
title = driver.find_element (De la. TAG_NAME, "titlu").get_attribute('text')
imprimare(titlu)
Structura de fișiere a unui proiect Scrapy constă din mai multe fișiere, ceea ce sporește complexitatea acestuia. Următorul cod elimină titlul de pe example.com:
import scrapyclasăTitluSpider(scrapy. Păianjen):
nume = 'titlu'
start_urls = ['https://example.com']
defanaliza(auto, răspuns):
Randament {
'Nume': response.css('titlu'),
}
Dacă doriți să extrageți date dintr-un serviciu care oferă un API oficial, ar putea fi o decizie înțeleaptă utilizați API-ul în loc să dezvoltați un web scraper.
2. Viteza de răzuire și paralelizare
Dintre cele trei, Scrapy este câștigătorul clar când vine vorba de viteză. Acest lucru se datorează faptului că acceptă paralelizarea în mod implicit. Folosind Scrapy, puteți trimite mai multe solicitări HTTP simultan și, când scriptul a descărcat codul HTML pentru primul set de solicitări, este gata să trimită un alt lot.
Cu Beautiful Soup, puteți folosi biblioteca de threading pentru a trimite solicitări HTTP concurente, dar nu este convenabil și va trebui să învățați multithreading pentru a face acest lucru. Pe Selenium, este imposibil să se realizeze paralelizarea fără a lansa mai multe instanțe de browser.
Dacă ar fi să clasați aceste trei instrumente de scraping web în ceea ce privește viteza, Scrapy este cel mai rapid, urmat de Beautiful Soup și Selenium.
3. Folosirea memoriei
Selenium este un API de automatizare a browserului, care și-a găsit aplicațiile în câmpul web scraping. Când utilizați Selenium pentru a răzui un site web, acesta generează o instanță de browser fără cap care rulează în fundal. Acest lucru face din Selenium un instrument care consumă mult resurse în comparație cu Beautiful Soup și Scrapy.
Deoarece acestea din urmă operează în întregime în linia de comandă, folosesc mai puține resurse de sistem și oferă performanțe mai bune decât Selenium.
4. Cerințe de dependență
Beautiful Soup este o colecție de instrumente de analiză care vă ajută să extrageți date din fișierele HTML și XML. Se livrează cu nimic altceva. Trebuie să folosești biblioteci ca cereri sau urllib pentru a face solicitări HTTP, analizatoare încorporate pentru a analiza HTML/XML și biblioteci suplimentare pentru a implementa proxy-uri sau suport pentru baze de date.
Scrapy, pe de altă parte, vine cu tot shebang. Obțineți instrumente pentru a trimite cereri, a analiza codul descărcat, a efectua operațiuni pe datele extrase și a stoca informațiile răzuite. Puteți adăuga alte funcționalități la Scrapy folosind extensii și middleware, dar asta va veni mai târziu.
Cu Selenium, descărcați un driver web pentru browserul pe care doriți să îl automatizați. Pentru a implementa alte funcții, cum ar fi stocarea datelor și suportul proxy, veți avea nevoie de module terțe.
5. Calitatea documentatiei
În general, fiecare documentație a proiectului este bine structurată și descrie fiecare metodă folosind exemple. Dar eficiența documentației unui proiect depinde în mare măsură și de cititor.
Documentația Beautiful Soup este mult mai bună pentru începătorii care încep cu web scraping. Selenium și Scrapy au documentație detaliată, fără îndoială, dar jargonul tehnic îi poate surprinde pe mulți nou-veniți.
Dacă aveți experiență cu concepte și terminologii de programare, atunci oricare dintre cele trei documentații ar fi ușor de citit.
6. Suport pentru extensii și middleware
Scrapy este cel mai extensibil cadru Python de scraping web, punct. Acceptă middleware, extensii, proxy și multe altele și vă ajută să dezvoltați un crawler pentru proiecte la scară largă.
Puteți scrie crawlere sigure și eficiente prin implementarea middleware-urilor în Scrapy, care sunt practic cârlige care adaugă funcționalitate personalizată mecanismului implicit al cadrului. De exemplu, HttpErrorMiddleware are grijă de erorile HTTP, astfel încât păianjenii să nu fie nevoiți să se ocupe de ele în timpul procesării cererilor.
Middleware-ul și extensiile sunt exclusive pentru Scrapy, dar puteți obține rezultate similare cu Beautiful Soup și Selenium folosind biblioteci Python suplimentare.
7. Redare JavaScript
Selenium are un caz de utilizare în care depășește alte biblioteci web scraping, și anume, scraping site-uri web compatibile cu JavaScript. Deși puteți răzui elemente JavaScript folosind middleware-uri Scrapy, fluxul de lucru Selenium este cel mai ușor și mai convenabil dintre toate.
Folosiți un browser pentru a încărca un site web, pentru a interacționa cu acesta folosind clicuri și apăsări de butoane și când aveți conținutul de care aveți nevoie pentru a răzui pe ecran, extrageți-l folosind CSS și XPath ale Selenium selectoare.
Beautiful Soup poate selecta elemente HTML folosind fie selectoare XPath, fie CSS. Totuși, nu oferă funcționalitate pentru a răzui elementele redate prin JavaScript pe o pagină web.
Web Scraping este ușoară cu Python
Internetul este plin de date brute. Web scraping ajută la transformarea acestor date în informații semnificative care pot fi folosite în mod adecvat. Seleniul este cel mai probabil cel mai sigur pariu al tău dacă vrei să răzuiești un site web cu JavaScript sau trebuie să declanșezi câteva elemente de pe ecran înainte de a extrage datele.
Scrapy este un cadru de scraping web cu drepturi depline pentru toate nevoile dvs., fie că doriți să scrieți un crawler mic sau un scraper la scară mare care accesează cu crawlere în mod repetat internetul pentru date actualizate.
Puteți folosi Beautiful Supp dacă sunteți începător sau aveți nevoie să dezvoltați rapid o racletă. Indiferent de cadru sau bibliotecă cu care mergeți, este ușor să începeți să învățați web scraping cu Python.