Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Se želite naučiti spletnega strganja s Pythonom, vendar ste zmedeni glede tega, ali bi za svoj naslednji projekt uporabili Beautiful Soup, Selenium ali Scrapy? Čeprav so vse te knjižnice in okviri Python sami po sebi zmogljivi, ne ustrezajo vse potrebe spletnega strganja, zato je pomembno vedeti, katero orodje morate uporabiti za določeno služba.

Oglejmo si razlike med Beautiful Soup, Scrapy in Selenium, da se boste lahko pametno odločili, preden začnete z naslednjim projektom spletnega strganja Python.

1. Enostavnost uporabe

Če ste začetnik, bi bila vaša prva zahteva knjižnica, ki je preprosta za učenje in uporabo. Beautiful Soup vam ponuja vsa osnovna orodja, ki jih potrebujete za brskanje po spletu, in še posebej koristno za ljudi, ki imajo minimalne izkušnje s Pythonom, vendar želijo začeti s spletom strganje.

Edino opozorilo je, da Beautiful Soup zaradi svoje preprostosti ni tako močan kot Scrapy ali Selenium. Programerji z razvojnimi izkušnjami zlahka obvladajo tako Scrapy kot Selenium, za začetnike pa izdelava prvega projekta lahko traja veliko časa, če se odločijo za ta ogrodja namesto Beautiful Juha.

instagram viewer

Če želite postrgati vsebino naslovne oznake na example.com s pomočjo Beautiful Soup, uporabite to kodo:

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

Če želite doseči podobne rezultate z uporabo selena, bi napisali:

url = "https://example.com"
voznik = spletni gonilnik. Chrome("pot/do/chromedriverja")
voznik.dobiti(url)
title = driver.find_element (avtor: TAG_NAME, "naslov").get_attribute('besedilo')
tiskanje(naslov)

Datotečna struktura projekta Scrapy je sestavljena iz več datotek, kar še poveča njegovo kompleksnost. Naslednja koda postrga naslov iz example.com:

uvoz scrapy

razredTitleSpider(strganje. Pajek):
ime = 'naslov'
začetni_urls = ['https://example.com']

defrazčleniti(jaz, odgovor):
donos {
'ime': odziv.css('naslov'),
}

Če želite izvleči podatke iz storitve, ki ponuja uradni API, bi bila morda pametna odločitev uporabite API namesto razvijanja spletnega strgala.

2. Hitrost strganja in paralelizacija

Od treh je Scrapy jasen zmagovalec, ko gre za hitrost. To je zato, ker privzeto podpira paralelizacijo. S Scrapy lahko pošljete več zahtev HTTP hkrati in ko skript prenese kodo HTML za prvi niz zahtev, je pripravljen za pošiljanje drugega paketa.

S Beautiful Soup lahko uporabite knjižnico niti za pošiljanje sočasnih zahtev HTTP, vendar to ni priročno in za to se boste morali naučiti večnitnosti. Na Seleniumu je nemogoče doseči paralelizacijo brez zagona več primerkov brskalnika.

Če bi ta tri orodja za spletno strganje razvrstili glede na hitrost, je Scrapy najhitrejši, sledita mu Beautiful Soup in Selenium.

3. Poraba pomnilnika

Selenium je API za avtomatizacijo brskalnika, ki je svoje aplikacije našel v polje za strganje spleta. Ko uporabite Selenium za strganje spletnega mesta, ustvari brezglavi primerek brskalnika, ki deluje v ozadju. Zaradi tega je Selenium orodje, ki zahteva veliko virov v primerjavi z Beautiful Soup in Scrapy.

Ker slednji v celoti delujejo v ukazni vrstici, porabijo manj sistemskih virov in nudijo boljše delovanje kot Selenium.

4. Zahteve glede odvisnosti

Beautiful Soup je zbirka orodij za razčlenjevanje, ki vam pomagajo izvleči podatke iz datotek HTML in XML. Pošilja se z ničemer drugim. Uporabiti morate knjižnice, kot je zahteve oz urllib za izdelavo zahtev HTTP, vgrajeni razčlenjevalniki za razčlenjevanje HTML/XML in dodatne knjižnice za implementacijo proxyjev ali podpore za baze podatkov.

Scrapy, na drugi strani, prihaja s celotnim shebangom. Dobite orodja za pošiljanje zahtev, razčlenjevanje prenesene kode, izvajanje operacij na ekstrahiranih podatkih in shranjevanje postrganih informacij. V Scrapy lahko dodate druge funkcije z razširitvami in vmesno programsko opremo, vendar bo to prišlo pozneje.

S Seleniumom prenesete spletni gonilnik za brskalnik, ki ga želite avtomatizirati. Za implementacijo drugih funkcij, kot sta shranjevanje podatkov in podpora proxyju, potrebujete module tretjih oseb.

5. Kakovost dokumentacije

Na splošno je vsaka dokumentacija projekta dobro strukturirana in opisuje vsako metodo z uporabo primerov. Toda učinkovitost projektne dokumentacije je močno odvisna tudi od bralca.

Dokumentacija Beautiful Soup je veliko boljša za začetnike, ki začenjajo s spletnim strganjem. Selenium in Scrapy imata nedvomno podrobno dokumentacijo, vendar lahko tehnični žargon mnoge novince ujame nepripravljene.

Če imate izkušnje s programskimi koncepti in terminologijo, bi bilo eno od treh dokumentov enostavno prebrati.

6. Podpora za razširitve in vmesno programsko opremo

Scrapy je najbolj razširljivo ogrodje Python za spletno strganje, pika. Podpira vmesno programsko opremo, razširitve, posrednike in drugo ter vam pomaga razviti pajka za obsežne projekte.

Lahko napišete varne in učinkovite pajke z implementacijo vmesne programske opreme v Scrapy, ki so v bistvu kljuke, ki dodajo funkcionalnost po meri privzetemu mehanizmu ogrodja. Na primer, HttpErrorMiddleware poskrbi za napake HTTP, tako da se pajkom med obdelavo zahtevkov ni treba ukvarjati z njimi.

Vmesna programska oprema in razširitve so ekskluzivne za Scrapy, vendar lahko z uporabo dodatnih knjižnic Python dosežete podobne rezultate s Beautiful Soup in Selenium.

7. Upodabljanje JavaScript

Selenium ima en primer uporabe, kjer prekaša druge knjižnice za spletno strganje, in sicer strganje spletnih mest, ki podpirajo JavaScript. Čeprav lahko elemente JavaScript strgate z vmesno programsko opremo Scrapy, je potek dela Selenium najlažji in najbolj priročen od vseh.

Brskalnik uporabljate za nalaganje spletnega mesta, interakcijo z njim s kliki in pritiski gumbov ter kdaj imate vsebino, ki jo morate postrgati na zaslon, ekstrahirajte jo s Seleniumovim CSS in XPath selektorji.

Beautiful Soup lahko izbere elemente HTML z uporabo izbirnikov XPath ali CSS. Vendar ne ponuja funkcije za strganje elementov, upodobljenih z JavaScriptom, na spletni strani.

Spletno strganje je preprosto s Pythonom

Internet je poln neobdelanih podatkov. Spletno strganje pomaga pretvoriti te podatke v pomembne informacije, ki jih je mogoče koristno uporabiti. Selenium je najverjetneje vaša najvarnejša stava, če želite postrgati spletno mesto z JavaScriptom ali morate sprožiti nekatere elemente na zaslonu, preden izvlečete podatke.

Scrapy je popolno ogrodje za spletno strganje za vse vaše potrebe, ne glede na to, ali želite napisati majhnega pajka ali obsežnega strgala, ki vedno znova preiskuje internet za posodobljene podatke.

Beautiful Soup lahko uporabite, če ste začetnik ali morate hitro razviti strgalo. Ne glede na okvir ali knjižnico, ki jo uporabljate, je preprosto začeti učiti spletno strganje s Pythonom.