Existuje niekoľko knižníc a rámcov Pythonu na extrahovanie údajov z webu. Každý začína s konkrétnym nástrojom, kým si neuvedomí, že to nemusí byť najvhodnejšie pre jeho ďalší projekt. Aj keď je veľmi nepravdepodobné, že použijete všetky nástroje Pythonu v jednom projekte, mali by ste vedieť, ktoré z nich máte mať po ruke vo svojej súprave nástrojov na zoškrabovanie webu.
Tu sú najlepšie knižnice Pythonu, rámce a ďalšie nástroje, ktoré vám pomôžu bez námahy zoškrabať údaje z webu.
1. Krásna polievka
Počnúc zoznamom najlepšou knižnicou zoškrabovania webu pre začiatočníkov: Krásna polievka. Je to v podstate nástroj, ktorý extrahuje údaje z analyzovaných súborov HTML a XML transformáciou dokumentu na objekt Python.
„Krása“ Beautiful Soup spočíva v jej jednoduchosti. Je ľahké nastaviť a môžete začnite so svojím prvým projektom zoškrabovania webu v priebehu niekoľkých minút. Beautiful Soup využíva hierarchický prístup k extrahovaniu údajov z dokumentu HTML. Prvky môžete extrahovať pomocou značiek, tried, ID, názvov a ďalších atribútov HTML.
Očakávať od Beautiful Soup viac by však zašlo príliš ďaleko. Neexistuje žiadna vstavaná podpora pre middleware a ďalšie pokročilé funkcie, ako je rotácia proxy alebo multi-threading. S Beautiful Soup potrebujete knižnice na odosielanie HTTP požiadaviek, analýzu stiahnutého dokumentu a export zoškrabaných informácií do výstupného súboru.
2. žiadosti
requesty je nepochybne najpoužívanejšou knižnicou Pythonu na spracovanie HTTP požiadaviek. Tento nástroj spĺňa svoj slogan: HTTP for Humans™. Podporuje viacero typov požiadaviek HTTP, od GET a POST po PATCH a DELETE. Nielen to, môžete ovládať takmer každý aspekt požiadavky vrátane hlavičiek a odpovedí.
Ak to znie jednoducho, buďte si istí, že požiadavky uspokoja aj pokročilých používateľov s množstvom funkcií. Môžete si pohrať so žiadosťou a prispôsobiť jej hlavičky, nahrať súbor na server pomocou POST a okrem iného spracovávať časové limity, presmerovania a relácie.
Žiadosti sa zvyčajne spájajú s aplikáciou Beautiful Soup, pokiaľ ide o zoškrabovanie webu, pretože iné rámce Pythonu majú vstavanú podporu pre spracovanie požiadaviek HTTP. Ak chcete získať kód HTML pre webovú stránku, mali by ste použiť požiadavky na odoslanie požiadavky GET na server, potom extrahovať textové údaje z odpovede a odovzdať ich do Beautiful Soup.
3. odfláknutý
Ako už názov napovedá, Scrapy je rámec Pythonu na vývoj rozsiahlych webových škrabiek. Je to švajčiarsky nôž na extrahovanie údajov z webu. Scrapy zvládne všetko od odosielania požiadaviek a implementácie proxy až po extrakciu a export dát.
Na rozdiel od Beautiful Soup je skutočnou silou Scrapy jeho sofistikovaný mechanizmus. Nenechajte sa však touto zložitosťou zastrašiť. Scrapy je najefektívnejším rámcom zoškrabovania webu v tomto zozname, pokiaľ ide o rýchlosť, efektivitu a funkcie. Dodáva sa so selektormi, ktoré vám umožňujú vybrať údaje z dokumentu HTML pomocou prvkov XPath alebo CSS.
Ďalšou výhodou je rýchlosť, akou Scrapy odosiela požiadavky a extrahuje dáta. Posiela a spracováva požiadavky asynchrónne a práve to ho odlišuje od iných nástrojov na zoškrabovanie webu.
Okrem základných funkcií získate aj podporu pre middleware, čo je rámec hákov, ktoré do predvoleného mechanizmu Scrapy vkladajú ďalšie funkcie. Webové stránky s podporou JavaScriptu nemôžete zoškrabať pomocou nástroja Scrapy hneď po vybalení, ale môžete použiť middleware ako scrapy-selenium, scrapy-splash a scrapy-scrapingbee na implementáciu tejto funkcie do vášho projektu.
Nakoniec, keď skončíte s extrakciou údajov, môžete ich exportovať do rôznych formátov súborov; CSV, JSON a XML, aby sme vymenovali aspoň niektoré.
Scrapy je jedným z mnohých dôvodov, prečo je Python najlepším programovacím jazykom pre každého, kto sa zaoberá zoškrabovaním webu. Nastavenie vášho prvého projektu Scrapy môže chvíľu trvať, najmä ak nemáte skúsenosti s triedami a rámcami Pythonu. Pracovný postup Scrapy je rozdelený do viacerých súborov a pre začiatočníkov sa to môže javiť ako nevyžiadaná zložitosť.
4. Selén
Ak chcete zoškrabať dynamický obsah vykreslený pomocou JavaScriptu, potom je Selenium to, čo potrebujete. Ako multiplatformový webový testovací rámec vám Selenium pomáha vykresľovať HTML, CSS a JavaScript a extrahovať to, čo je potrebné. Môžete tiež napodobniť skutočné interakcie používateľov pomocou pevného kódovania akcií klávesnice a myši, čo úplne zmení hru.
Selenium vytvorí inštanciu prehliadača pomocou webového ovládača a načíta stránku. Niektoré populárne prehliadače podporované Selenium sú Google Chrome, Mozilla Firefox, Opera, Microsoft Edge, Apple Safari a Internet Explorer. Na nájdenie a extrahovanie obsahu z prvkov HTML na stránke využíva lokátory CSS a XPath, podobné selektorom Scrapy.
Ak nemáte skúsenosti s Pythonom, ale poznáte iné programovacie jazyky, môžete Selenium použiť s C#, JavaScript, PHP, Perl, Ruby a Java.
Jediným obmedzením je, že keďže Selenium spúšťa webový prehliadač na pozadí, zdroje potrebné na spustenie škrabáka sa výrazne zvyšujú, v porovnaní s Scrapy alebo Beautiful Soup. Ale vzhľadom na ďalšie funkcie, ktoré Selenium prináša, je to úplne opodstatnené.
5. urllib
Knižnica Python urllib je jednoduchý, ale nevyhnutný nástroj, ktorý musíte mať vo svojom webovom zoškrabávacom arzenáli. Umožňuje vám spracovávať a spracovávať adresy URL vo vašich skriptoch Python.
Vhodnou praktickou aplikáciou urllib je úprava adresy URL. Zvážte, že zoškrabujete webovú stránku s viacerými stránkami a potrebujete upraviť časť adresy URL, aby ste sa dostali na ďalšiu stránku.
urllib vám môže pomôcť analyzovať adresu URL a rozdeliť ju na viacero častí, ktoré potom môžete upraviť a zrušiť analýzu, aby ste vytvorili novú adresu URL. Zatiaľ čo používanie knižnice na analýzu reťazcov sa môže zdať prehnané, urllib je záchranca pre ľudí, ktorí kódujú webové škrabky pre zábavu a nechcú sa dostať do hrubej zrnitosti dátových štruktúr.
Ak chcete preskúmať súbor robots.txt na webovej lokalite, čo je textový súbor obsahujúci pravidlá prístupu pre prehľadávač Google a iné nástroje na škrabanie, môže vám s tým pomôcť aj urllib. Odporúča sa, aby ste sa riadili súborom robots.txt danej webovej lokality a zoškrabovali len stránky, ktoré sú povolené.
6. Knižnice JSON, CSV a XML
Keďže Beautiful Soup alebo Selenium nemajú vstavané funkcie na export údajov, budete potrebovať knižnicu Python exportovať dáta do JSON, CSV alebo XML. Našťastie existuje množstvo knižníc, ktoré môžete urobiť, aby ste to dosiahli, a odporúčame tie najzákladnejšie, konkrétne json, csv a xml pre súbory JSON, CSV a XML.
Takéto knižnice vám umožňujú vytvoriť súbor, pridať doň údaje a nakoniec súbor exportovať do lokálneho úložiska alebo vzdialeného servera.
7. Mechanická polievka
Mechanická polievka? Je to lacný podvod na krásnu polievku? Nie. Inšpirovaný Mechanizovať a na základe požiadaviek Pythonu a Beautiful Soup vám MechanicalSoup pomáha automatizovať ľudské správanie a extrahovať dáta z webovej stránky. Môžete to považovať za polcestu medzi Beautiful Soup a Selenium. Jediný úlovok? Nezvláda JavaScript.
Aj keď sú názvy podobné, syntax a pracovný postup MechanicalSoup sú veľmi odlišné. Vytvoríte reláciu prehliadača pomocou MechanicalSoup a keď sa stránka stiahne, použijete metódy Beautiful Soup, ako napr Nájsť() a nájsť_všetko() na extrahovanie údajov z dokumentu HTML.
Ďalšou pôsobivou vlastnosťou MechanicalSoup je, že vám umožňuje vypĺňať formuláre pomocou skriptu. Toto je obzvlášť užitočné, keď potrebujete zadať niečo do poľa (napríklad do vyhľadávacieho panela), aby ste sa dostali na stránku, ktorú chcete zoškrabať. Spracovanie požiadaviek MechanicalSoup je úžasné, pretože dokáže automaticky spracovať presmerovania a sledovať odkazy na stránke, čo vám ušetrí námahu manuálneho kódovania sekcie.
Keďže je založená na Krásnej polievke, nevýhody oboch týchto knižníc sa výrazne prekrývajú. Napríklad žiadna vstavaná metóda na spracovanie výstupu údajov, rotácie proxy a vykresľovania JavaScriptu. Jediný problém s Beautiful Soup, ktorý MechanicalSoup vyriešil, je podpora spracovania požiadaviek, ktorá bola vyriešená kódovaním obalu pre knižnicu požiadaviek Pythonu.
Zjednodušené zoškrabovanie webu v Pythone
Python je bezpochyby výkonný programovací jazyk na zoškrabovanie webu, ale použité nástroje sú len časťou problému. Najvýraznejším problémom, ktorému ľudia čelia pri kódovaní scraperu, je učenie sa hierarchie HTML dokumentov.
Pochopenie štruktúry webovej stránky a vedieť, ako rýchlo lokalizovať prvok, je nevyhnutnosťou, ak chcete vyvinúť pokročilé webové škrabky.