Chcete sa naučiť zoškrabovať web pomocou jazyka Python, ale neviete, či pre svoj ďalší projekt použiť Krásnu polievku, Selén alebo Scrapy? Aj keď sú všetky tieto knižnice a rámce Pythonu výkonné samy osebe, nezabezpečujú všetky potreby zoškrabovania webu, a preto je dôležité vedieť, ktorý nástroj by ste mali pre konkrétny nástroj použiť prácu.
Poďme sa pozrieť na rozdiely medzi Beautiful Soup, Scrapy a Selenium, aby ste sa mohli múdro rozhodnúť skôr, ako začnete s ďalším projektom zoškrabovania webu Python.
1. Jednoduchosť použitia
Ak ste začiatočník, vašou prvou požiadavkou by bola knižnica, ktorá sa dá ľahko naučiť a používať. Beautiful Soup vám ponúka všetky základné nástroje, ktoré potrebujete na zoškrabanie webu, a to najmä užitočné pre ľudí, ktorí majú minimálne skúsenosti s Pythonom, ale chcú preraziť s webom škrabanie.
Jedinou výhradou je, že krásna polievka nie je vďaka svojej jednoduchosti taká výkonná ako v porovnaní s Scrapy alebo Selenium. Programátori so skúsenosťami s vývojom môžu ľahko zvládnuť Scrapy aj Selenium, ale pre začiatočníkov je to zostavenie prvého projektu môže trvať veľa času, ak sa rozhodnú použiť tieto rámce namiesto Beautiful polievka.
Na zoškrabanie obsahu značky názvu na example.com pomocou Beautiful Soup by ste použili nasledujúci kód:
url = "https://example.com/"
res = requesty.get (url).text
polievka = krásna polievka (res, 'html.parser')
title = soup.find("titul").text
vytlačiť(názov)
Ak chcete dosiahnuť podobné výsledky pomocou selénu, napíšte:
url = "https://example.com"
driver = webdriver. Chrome("cesta/k/ovládaču chrome")
vodič.dostať(url)
title = driver.find_element (Autor: TAG_NAME, "titul").get_attribute('text')
vytlačiť(názov)
Súborová štruktúra projektu Scrapy pozostáva z viacerých súborov, čo zvyšuje jeho zložitosť. Nasledujúci kód zoškrabáva názov z example.com:
importovať škriabanýtriedaTitleSpider(potrhaný. pavúk):
meno = 'titul'
start_urls = ['https://example.com']
defrozobrať(ja, odpoveď):
výnos {
'názov': response.css('titul'),
}
Ak chcete extrahovať údaje zo služby, ktorá ponúka oficiálne rozhranie API, môže to byť rozumné rozhodnutie použite rozhranie API namiesto vývoja webovej škrabky.
2. Rýchlosť škrabania a paralelizácia
Z týchto troch je Scrapy jasným víťazom, pokiaľ ide o rýchlosť. Je to preto, že štandardne podporuje paralelizáciu. Pomocou Scrapy môžete odoslať viacero HTTP požiadaviek naraz a keď skript stiahne HTML kód pre prvú sadu požiadaviek, je pripravený odoslať ďalšiu dávku.
S Beautiful Soup môžete použiť knižnicu vlákien na odosielanie súbežných požiadaviek HTTP, ale nie je to pohodlné a budete sa musieť naučiť pracovať s viacerými vláknami. Na Selenium nie je možné dosiahnuť paralelizáciu bez spustenia viacerých inštancií prehliadača.
Ak by ste mali zoradiť tieto tri nástroje na zoškrabovanie webu z hľadiska rýchlosti, Scrapy je najrýchlejší, nasleduje Krásna polievka a Selén.
3. Využitie pamäte
Selenium je rozhranie API na automatizáciu prehliadača, ktoré si našlo svoje uplatnenie v pole zoškrabovania webu. Keď použijete Selenium na zoškrabanie webovej stránky, vytvorí sa bezhlavá inštancia prehliadača, ktorá beží na pozadí. Vďaka tomu je Selenium v porovnaní s Beautiful Soup and Scrapy nástrojom náročným na zdroje.
Keďže tieto fungujú výlučne v príkazovom riadku, využívajú menej systémových prostriedkov a ponúkajú lepší výkon ako Selenium.
4. Požiadavky na závislosť
Beautiful Soup je zbierka nástrojov na analýzu, ktoré vám pomôžu extrahovať údaje zo súborov HTML a XML. Dodáva sa s ničím iným. Musíte použiť knižnice ako žiadosti alebo urllib na vytváranie požiadaviek HTTP, vstavané analyzátory na analýzu HTML/XML a ďalšie knižnice na implementáciu proxy alebo podpory databáz.
Scrapy, na druhej strane, prichádza s celým shebangom. Získate nástroje na odosielanie požiadaviek, analýzu stiahnutého kódu, vykonávanie operácií s extrahovanými údajmi a ukladanie zoškrabaných informácií. Do Scrapy môžete pridať ďalšie funkcie pomocou rozšírení a middlewaru, ale to príde neskôr.
So Selenium si stiahnete webový ovládač pre prehliadač, ktorý chcete automatizovať. Na implementáciu ďalších funkcií, ako je ukladanie údajov a podpora proxy, by ste potrebovali moduly tretích strán.
5. Kvalita dokumentácie
Celkovo je každá projektová dokumentácia dobre štruktúrovaná a popisuje každú metódu pomocou príkladov. Účinnosť projektovej dokumentácie však do veľkej miery závisí aj od čitateľa.
Dokumentácia Beautiful Soup je oveľa lepšia pre začiatočníkov, ktorí začínajú so zoškrabovaním webu. Selenium a Scrapy majú nepochybne podrobnú dokumentáciu, ale technický žargón dokáže zaskočiť mnohých nováčikov.
Ak máte skúsenosti s programovacími konceptmi a terminológiou, potom by bolo ľahké prečítať si ktorúkoľvek z troch dokumentácií.
6. Podpora pre rozšírenia a middleware
Scrapy je najviac rozšíriteľný rámec Pythonu na zoškrabovanie webu. Podporuje middleware, rozšírenia, servery proxy a ďalšie a pomáha vám vyvinúť prehľadávač pre rozsiahle projekty.
Môžete písať spoľahlivé a efektívne prehľadávače implementáciou middlewarov v Scrapy, čo sú v podstate háčiky, ktoré pridávajú vlastné funkcie k predvolenému mechanizmu rámca. Napríklad HttpErrorMiddleware sa stará o chyby HTTP, takže pavúky ich nemusia riešiť pri spracovávaní požiadaviek.
Middleware a rozšírenia sú exkluzívne pre Scrapy, ale podobné výsledky môžete dosiahnuť aj s Beautiful Soup and Selenium použitím ďalších Python knižníc.
7. Vykresľovanie JavaScriptu
Selenium má jeden prípad použitia, v ktorom prevyšuje ostatné knižnice na zoškrabovanie webových stránok, a to je zoškrabovanie webových stránok s povoleným JavaScriptom. Aj keď môžete zoškrabať prvky JavaScriptu pomocou middlewarov Scrapy, pracovný postup Selenium je najjednoduchší a najpohodlnejší zo všetkých.
Prehliadač používate na načítanie webovej stránky, interakciu s ňou pomocou kliknutí a stláčania tlačidiel a kedy máte obsah, ktorý potrebujete zoškrabať na obrazovke, extrahovať ho pomocou CSS a XPath Selenium selektory.
Beautiful Soup dokáže vybrať prvky HTML pomocou selektorov XPath alebo CSS. Neponúka však funkcie na zoškrabanie prvkov vykreslených JavaScriptom na webovej stránke.
Jednoduché zoškrabovanie webu pomocou Pythonu
Internet je plný nespracovaných údajov. Web scraping pomáha previesť tieto údaje na zmysluplné informácie, ktoré sa dajú dobre využiť. Selén je s najväčšou pravdepodobnosťou vašou najbezpečnejšou stávkou, ak chcete zoškrabať webovú stránku pomocou JavaScriptu alebo potrebujete spustiť niektoré prvky na obrazovke pred extrahovaním údajov.
Scrapy je plnohodnotný rámec na zoškrabovanie webu pre všetky vaše potreby, či už chcete napísať malý prehľadávač alebo veľký prehľadávač, ktorý opakovane prehľadáva internet a hľadá aktualizované údaje.
Krásnu polievku môžete použiť, ak ste začiatočník alebo potrebujete rýchlo vyvinúť škrabku. Bez ohľadu na to, s akým rámcom alebo knižnicou idete, je ľahké začať sa učiť web scraping s Pythonom.