Obstaja več knjižnic in ogrodij Python za pridobivanje podatkov iz spleta. Vsakdo začne z določenim orodjem, dokler ne ugotovi, da morda ni najbolj primerno za njegov naslednji projekt. Čeprav je zelo malo verjetno, da boste uporabili vsa orodja Python v enem samem projektu, morate vedeti, katera imeti pri roki v svoji orodjarni za spletno strganje.
Tukaj so najboljše knjižnice, ogrodja in druga orodja Python, ki vam bodo pomagala brez napora strgati podatke iz spleta.
1. Lepa juha
Seznam začnemo z najboljšo knjižnico za spletno strganje za začetnike: Beautiful Soup. To je v bistvu orodje, ki ekstrahira podatke iz razčlenjenih datotek HTML in XML s preoblikovanjem dokumenta v objekt Python.
"Lepota" Beautiful Soup je v njeni preprostosti. Nastavitev je preprosta in lahko začnite s svojim prvim projektom spletnega strganja v nekaj minutah. Beautiful Soup uporablja hierarhični pristop za pridobivanje podatkov iz dokumenta HTML. Elemente lahko izvlečete z uporabo oznak, razredov, ID-jev, imen in drugih atributov HTML.
Pričakovati več od Beautiful Soup pa bi bilo predaleč. Ni vgrajene podpore za vmesno programsko opremo in druge napredne funkcije, kot je rotacija posrednika ali večnitnost. S Beautiful Soup potrebujete knjižnice za pošiljanje zahtev HTTP, razčlenjevanje prenesenega dokumenta in izvoz postrganih informacij v izhodno datoteko.
2. zahteve
requests je nedvomno najpogosteje uporabljena knjižnica Python za obdelavo zahtev HTTP. Orodje se drži svojega slogana: HTTP for Humans™. Podpira več vrst zahtev HTTP, od GET in POST do PATCH in DELETE. Ne samo to, nadzirate lahko skoraj vse vidike zahteve, vključno z glavami in odgovori.
Če se to sliši enostavno, bodite prepričani, saj zahteve s številnimi funkcijami poskrbijo tudi za napredne uporabnike. Lahko se poigrate z zahtevo in prilagodite njene glave, naložite datoteko na strežnik z uporabo POST ter med drugim obravnavate časovne omejitve, preusmeritve in seje.
requests je običajno povezana s Beautiful Soup, ko gre za spletno strganje, saj imajo druga ogrodja Python vgrajeno podporo za obdelavo zahtev HTTP. Če želite pridobiti HTML za spletno stran, uporabite zahteve za pošiljanje zahteve GET strežniku, nato izvlečete besedilne podatke iz odgovora in jih posredujete Beautiful Soup.
3. Scrapy
Kot že ime pove, je Scrapy ogrodje Python za razvoj obsežnih spletnih strgalnikov. To je švicarski nož za pridobivanje podatkov iz spleta. Scrapy obravnava vse od pošiljanja zahtev in izvajanja proxyjev do ekstrakcije in izvoza podatkov.
Za razliko od Beautiful Soup je prava moč Scrapyja njegov prefinjen mehanizem. Vendar naj vas ta kompleksnost ne prestraši. Scrapy je najučinkovitejše ogrodje za spletno strganje na tem seznamu v smislu hitrosti, učinkovitosti in funkcij. Na voljo je z izbirniki, ki vam omogočajo izbiro podatkov iz dokumenta HTML z uporabo elementov XPath ali CSS.
Dodatna prednost je hitrost, s katero Scrapy pošilja zahteve in ekstrahira podatke. Pošilja in obdeluje zahteve asinhrono, in to je tisto, kar ga ločuje od drugih orodij za spletno strganje.
Poleg osnovnih funkcij dobite tudi podporo za vmesno programsko opremo, ki je ogrodje kavljev, ki dodaja dodatno funkcionalnost privzetemu mehanizmu Scrapy. Spletnih mest, ki jih poganja JavaScript, ne morete takoj postrgati s Scrapy, lahko pa uporabite vmesno programsko opremo, kot je scrapy-selenium, scrapy-splash in scrapy-scrapingbee za implementacijo te funkcionalnosti v vaš projekt.
Ko končate z ekstrahiranjem podatkov, jih lahko izvozite v različnih formatih datotek; CSV, JSON in XML, če naštejemo le nekatere.
Scrapy je eden od mnogih razlogov, zakaj je Python najboljši programski jezik za vsakogar, ki se ukvarja s spletnim strganjem. Nastavitev vašega prvega projekta Scrapy lahko traja nekaj časa, še posebej, če nimate izkušenj z razredi in ogrodji Python. Delovni tok Scrapyja je razdeljen na več datotek in za začetnike se to lahko zdi neželena zapletenost.
4. Selen
Če želite strgati dinamično vsebino, upodobljeno z JavaScriptom, potem je Selenium tisto, kar potrebujete. Kot ogrodje za spletno testiranje na več platformah vam Selenium pomaga upodabljati HTML, CSS in JavaScript ter izvleči, kar je potrebno. Prav tako lahko posnemate resnične uporabniške interakcije s trdim kodiranjem dejanj tipkovnice in miške, kar popolnoma spremeni igro.
Selenium z uporabo spletnega gonilnika ustvari primerek brskalnika in naloži stran. Nekateri priljubljeni brskalniki, ki jih podpira Selenium, so Google Chrome, Mozilla Firefox, Opera, Microsoft Edge, Apple Safari in Internet Explorer. Za iskanje in pridobivanje vsebine iz elementov HTML na strani uporablja lokatorje CSS in XPath, podobne izbirnikom Scrapy.
Če nimate izkušenj s Pythonom, vendar poznate druge programske jezike, lahko uporabite Selenium s C#, JavaScript, PHP, Perl, Ruby in Javo.
Edina omejitev je, ker Selenium zažene spletni brskalnik v ozadju, se sredstva, potrebna za izvajanje strgala, znatno povečajo, v primerjavi s Scrapy ali Beautiful Soup. Toda glede na dodatne funkcije, ki jih Selenium prinaša na mizo, je to povsem upravičeno.
5. urllib
Knjižnica urllib Python je preprosto, a bistveno orodje, ki ga imate v svojem arzenalu spletnega strganja. Omogoča obdelavo in obdelavo URL-jev v vaših skriptih Python.
Primerna praktična uporaba urlliba je spreminjanje URL-jev. Recimo, da strgate po spletnem mestu z več stranmi in morate spremeniti del URL-ja, da pridete do naslednje strani.
urllib vam lahko pomaga razčleniti URL in ga razdeliti na več delov, ki jih lahko nato spremenite in razčlenite, da ustvarite nov URL. Medtem ko se uporaba knjižnice za razčlenjevanje nizov morda zdi pretirano, je urllib rešilna bilka za ljudi, ki kodirajo spletna strgala za zabavo in se ne želijo spuščati v potankosti podatkovnih struktur.
Tudi če želite pregledati robots.txt spletnega mesta, ki je besedilna datoteka, ki vsebuje pravila dostopa za Googlovega pajka in druge strgala, vam urllib lahko pomaga tudi pri tem. Priporočljivo je, da sledite datoteki robots.txt spletnega mesta in strgate samo strani, ki so dovoljene.
6. Knjižnice JSON, CSV in XML
Ker Beautiful Soup ali Selenium nimata vgrajenih funkcij za izvoz podatkov, potrebujete knjižnico Python za izvozite podatke v JSON, CSV ali XML. Na srečo obstaja množica knjižnic, s katerimi lahko to dosežete, priporočljive pa so najosnovnejše, in sicer json, csv in xml za datoteke JSON, CSV oziroma XML.
Takšne knjižnice vam omogočajo, da ustvarite datoteko, ji dodate podatke in nato končno datoteko izvozite v lokalno shrambo ali oddaljeni strežnik.
7. MechanicalSoup
MechanicalSoup? Je to poceni lepa juha? Ne. Po navdihu Mehaniziraj in na podlagi zahtev Python in Beautiful Soup vam MechanicalSoup pomaga avtomatizirati človeško vedenje in izvleči podatke s spletne strani. Lahko ga smatrate za pol poti med Beautiful Soup in Selenium. Edini ulov? Ne podpira JavaScripta.
Čeprav sta si imena podobna, sta sintaksa in potek dela MechanicalSoupa zelo različna. Ustvarite sejo brskalnika z uporabo MechanicalSoup in ko je stran prenesena, uporabite metode Beautiful Soup, kot je najti() in najdi_vse() za pridobivanje podatkov iz dokumenta HTML.
Druga impresivna lastnost MechanicalSoup je, da vam omogoča izpolnjevanje obrazcev s pomočjo skripta. To je še posebej koristno, ko morate nekaj vnesti v polje (na primer v iskalno vrstico), da pridete do strani, ki jo želite postrgati. Obdelava zahtev MechanicalSoup je veličastna, saj lahko samodejno obravnava preusmeritve in sledi povezavam na strani, kar vam prihrani trud pri ročnem kodiranju razdelka za to.
Ker temelji na Beautiful Soup, se pomanjkljivosti obeh teh knjižnic precej prekrivajo. Na primer, ni vgrajene metode za obdelavo izpisa podatkov, rotacije proxyja in upodabljanja JavaScript. Edina težava Beautiful Soup, ki jo je MechanicalSoup odpravil, je podpora za obravnavanje zahtev, ki je bila rešena s kodiranjem ovoja za knjižnico zahtev Python.
Spletno strganje v Pythonu postalo preprostejše
Python je nedvomno močan programski jezik za strganje po spletu, vendar so uporabljena orodja le del težave. Najpomembnejša težava, s katero se ljudje srečujejo pri kodiranju strgala, je učenje hierarhije dokumentov HTML.
Če želite razviti napredna spletna strgala, morate razumeti strukturo spletne strani in vedeti, kako hitro poiskati element.