Beautiful Soup vs. Scrapy vs. Selenium: Koji alat za skrapiranje weba trebate koristiti?

Beautiful Soup vs. Scrapy vs. Selenium: Koji alat za skrapiranje weba trebate koristiti?
Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Želite naučiti web scraping s Pythonom, ali ste zbunjeni oko toga trebate li koristiti Beautiful Soup, Selenium ili Scrapy za svoj sljedeći projekt? Iako su sve te Python biblioteke i okviri moćni sami po sebi, oni ne zadovoljavaju sve potrebe skrapinga weba, pa je stoga važno znati koji alat trebate koristiti za određeni posao.





MAKEUSEOF VIDEO DANA

Pogledajmo razlike između Beautiful Soup, Scrapy i Selenium, tako da možete donijeti mudru odluku prije nego što započnete svoj sljedeći Python web scraping projekt.





1. Jednostavnost korištenja

Ako ste početnik, vaš bi prvi zahtjev bila biblioteka koju je lako naučiti i koristiti. Beautiful Soup nudi vam sve rudimentarne alate koji su vam potrebni za struganje weba, a posebno je koristan za ljude koji imaju minimalno iskustva s Pythonom, ali žele krenuti u trčanje sa struganjem weba.





zašto hbo max ne radi

Jedina zamjerka je, zbog svoje jednostavnosti, Beautiful Soup nije toliko moćan u usporedbi sa Scrapyjem ili Selenom. Programeri s razvojnim iskustvom mogu lako savladati i Scrapy i Selenium, ali za početnike, izgradnja prvog projekta može potrajati dosta vremena ako odluče koristiti ove okvire umjesto Beautiful Soup.

Za struganje sadržaja oznake naslova na example.com pomoću Beautiful Soup-a, trebali biste upotrijebiti sljedeći kôd:



url = "https://example.com/"
res = requests.get(url).text
soup = BeautifulSoup(res, 'html.parser')
title = soup.find("title").text
print(title)

Da biste postigli slične rezultate koristeći Selenium, trebali biste napisati:

url = "https://example.com"
driver = webdriver.Chrome("path/to/chromedriver")
driver.get(url)
title = driver.find_element(By.TAG_NAME, "title").get_attribute('text')
print(title)

Datotečna struktura Scrapy projekta sastoji se od više datoteka, što povećava njegovu složenost. Sljedeći kod struže naslov s example.com:





import scrapy

class TitleSpider(scrapy.Spider):
name = 'title'
start_urls = ['https://example.com']

def parse(self, response):
yield {
'name': response.css('title'),
}

Ako želite izvući podatke iz usluge koja nudi službeni API, možda bi to bila mudra odluka koristite API umjesto razvijanja web skrapera .

2. Brzina struganja i paralelizacija

Od tri, Scrapy je očiti pobjednik kada je riječ o brzini. To je zato što podržava paralelizaciju prema zadanim postavkama. Pomoću Scrapyja možete slati više HTTP zahtjeva odjednom, a kada skripta preuzme HTML kod za prvi skup zahtjeva, spremna je za slanje druge serije.





Uz Beautiful Soup, možete koristiti biblioteku niti za slanje istodobnih HTTP zahtjeva, ali to nije zgodno i morat ćete naučiti višenitnost da to učinite. Na Seleniumu je nemoguće postići paralelizaciju bez pokretanja više instanci preglednika.

Ako biste rangirali ova tri alata za skrapiranje weba u smislu brzine, Scrapy je najbrži, a slijede ga Beautiful Soup i Selenium.

3. Upotreba memorije

Selenium je API za automatizaciju preglednika koji je pronašao svoju primjenu u polje za struganje weba . Kada koristite Selenium za struganje web stranice, on stvara instancu preglednika bez glave koja radi u pozadini. To čini Selenium alatom koji zahtijeva velike resurse u usporedbi s Beautiful Soup i Scrapy.

Budući da potonji u potpunosti rade u naredbenom retku, koriste manje resursa sustava i nude bolje performanse od Seleniuma.

4. Zahtjevi ovisnosti

Beautiful Soup zbirka je alata za raščlanjivanje koji vam pomažu izdvojiti podatke iz HTML i XML datoteka. Isporučuje se s ničim drugim. Morate koristiti knjižnice poput zahtjevi ili vrištanje za upućivanje HTTP zahtjeva, ugrađeni parseri za raščlanjivanje HTML/XML-a i dodatne biblioteke za implementaciju proxyja ili podrške za bazu podataka.

Scrapy, s druge strane, dolazi s cijelim shebangom. Dobivate alate za slanje zahtjeva, raščlanjivanje preuzetog koda, izvođenje operacija na ekstrahiranim podacima i pohranjivanje skrapiranih informacija. Scrapyju možete dodati druge funkcije pomoću proširenja i međuprograma, ali to će doći kasnije.

Uz Selenium preuzimate web upravljački program za preglednik koji želite automatizirati. Da biste implementirali druge značajke kao što su pohrana podataka i proxy podrška, potrebni su vam moduli trećih strana.

5. Kvaliteta dokumentacije

  detaljna scrapy dokumentacija

Općenito, svaka projektna dokumentacija dobro je strukturirana i opisuje svaku metodu pomoću primjera. Ali učinkovitost dokumentacije projekta uvelike ovisi io čitatelju.

što je pametna mapa mac

Dokumentacija Beautiful Soupa puno je bolja za početnike koji počinju s web scrapingom. Selenium i Scrapy bez sumnje imaju detaljnu dokumentaciju, ali tehnički žargon mnoge pridošlice može uhvatiti nespremne.

Ako imate iskustva s programskim konceptima i terminologijom, bilo koju od tri dokumentacije bilo bi lako pročitati.

6. Podrška za proširenja i Middleware

Scrapy je najproširljiviji Python okvir za struganje weba, točka. Podržava međuware, proširenja, proxy i još mnogo toga te vam pomaže razviti alat za indeksiranje za velike projekte.

Možete napisati besprijekorne i učinkovite alate za indeksiranje implementiranjem međuprograma u Scrapy, koji su u osnovi kuke koje dodaju prilagođenu funkcionalnost zadanom mehanizmu okvira. Na primjer, HttpErrorMiddleware brine o HTTP pogreškama tako da se pauci ne moraju baviti njima dok obrađuju zahtjeve.

Middleware i proširenja ekskluzivni su za Scrapy, ali možete postići slične rezultate s Beautiful Soup i Selenium korištenjem dodatnih Python biblioteka.

najbolji besplatni čitač pdf -a za Windows 10

7. JavaScript renderiranje

  javascript kod napisan u uređivaču koda

Selenium ima jedan slučaj upotrebe u kojem nadmašuje druge biblioteke za struganje weba, a to je struganje web stranica s omogućenim JavaScriptom. Iako možete strugati JavaScript elemente pomoću Scrapy međuprograma, tijek rada Selenium je najlakši i najprikladniji od svih.

Koristite preglednik za učitavanje web stranice, interakciju s njom koristeći klikove i pritiske gumba, a kada imate sadržaj koji trebate skrapirati na zaslonu, ekstrahirajte ga pomoću Seleniumovih CSS i XPath selektora.

Beautiful Soup može odabrati HTML elemente pomoću XPath ili CSS selektora. No, ne nudi funkciju struganja JavaScript-renderiranih elemenata na web stranici.

Web scraping postalo je jednostavno uz Python

Internet je pun neobrađenih podataka. Web scraping pomaže pretvoriti te podatke u smislene informacije koje se mogu dobro iskoristiti. Selenium je vjerojatno vaša najsigurnija oklada ako želite scrape web stranicu s JavaScriptom ili trebate pokrenuti neke elemente na zaslonu prije izdvajanja podataka.

Scrapy je potpuni okvir za struganje weba za sve vaše potrebe, bilo da želite napisati mali alat za indeksiranje ili veliki alat za indeksiranje koji neprestano indeksira internet tražeći ažurirane podatke.

Možete koristiti Beautiful Soup ako ste početnik ili morate brzo razviti strugač. Koji god okvir ili biblioteku koristili, lako je početi učiti web scraping s Pythonom.​​​​​