Chcete se naučit web scraping s Pythonem, ale nevíte, zda pro svůj další projekt použít Beautiful Soup, Selenium nebo Scrapy? I když jsou všechny tyto knihovny a rámce Pythonu výkonné samy o sobě, nezabývají se všechny potřeby škrabání webu, a proto je důležité vědět, který nástroj byste měli použít pro konkrétní práce.
Pojďme se podívat na rozdíly mezi Beautiful Soup, Scrapy a Selenium, abyste se mohli moudře rozhodnout, než zahájíte svůj další Python web scraping projekt.
1. Snadnost použití
Pokud jste začátečník, vaším prvním požadavkem by byla knihovna, která se snadno učí a používá. Beautiful Soup vám nabízí všechny základní nástroje, které potřebujete k seškrábání webu, a to především užitečné pro lidi, kteří mají minimální zkušenosti s Pythonem, ale chtějí se prosadit s webem škrábání.
Jedinou výhradou je, že díky své jednoduchosti není Beautiful Soup tak výkonná jako ve srovnání s Scrapy nebo Selenium. Programátoři se zkušenostmi s vývojem zvládnou snadno jak Scrapy, tak Selenium, ale pro začátečníky je to první projekt může trvat hodně času, pokud se rozhodnou použít tyto rámce místo Beautiful Polévka.
Chcete-li seškrábat obsah značky názvu na example.com pomocí Krásné polévky, použijte následující kód:
url = "https://example.com/"
res = request.get (url).text
polévka = krásná polévka (res, 'html.parser')
title = soup.find("titul").text
tisk(titul)
Chcete-li dosáhnout podobných výsledků pomocí selenu, napište:
url = "https://example.com"
řidič = webovladač. Chrome("cesta/k/chromedriveru")
Řidič.dostat(url)
title = driver.find_element (Autor: TAG_NAME, "titul").get_attribute('text')
tisk(titul)
Souborová struktura projektu Scrapy se skládá z více souborů, což zvyšuje jeho složitost. Následující kód seškrábe název z example.com:
import odřenýtřídaTitleSpider(odbytný. Pavouk):
jméno = 'titul'
start_urls = ['https://example.com']
defrozebrat(sebe, odpověď):
výtěžek {
'název': response.css('titul'),
}
Pokud chcete extrahovat data ze služby, která nabízí oficiální API, může to být moudré rozhodnutí použijte API místo vývoje webového škrabáku.
2. Rychlost škrábání a paralelizace
Ze všech tří je Scrapy jasným vítězem, pokud jde o rychlost. To proto, že standardně podporuje paralelizaci. Pomocí Scrapy můžete odeslat více HTTP požadavků najednou, a když skript stáhne HTML kód pro první sadu požadavků, je připraven odeslat další dávku.
S Beautiful Soup můžete používat knihovnu vláken k odesílání souběžných požadavků HTTP, ale není to pohodlné a budete se k tomu muset naučit používat více vláken. Na Selenium je nemožné dosáhnout paralelizace bez spuštění více instancí prohlížeče.
Pokud byste měli seřadit tyto tři nástroje pro škrábání webu z hlediska rychlosti, Scrapy je nejrychlejší, následuje Beautiful Soup a Selenium.
3. Využití paměti
Selenium je rozhraní API pro automatizaci prohlížeče, které našlo své uplatnění v pole škrábání webu. Když použijete Selenium k odstranění webové stránky, vytvoří se bezhlavá instance prohlížeče, která běží na pozadí. Díky tomu je Selenium ve srovnání s Beautiful Soup and Scrapy nástroj náročný na zdroje.
Vzhledem k tomu, že tyto fungují výhradně v příkazovém řádku, využívají méně systémových prostředků a nabízejí lepší výkon než Selenium.
4. Požadavky na závislost
Beautiful Soup je sbírka nástrojů pro analýzu, které vám pomohou extrahovat data ze souborů HTML a XML. Dodává se s ničím jiným. Musíte používat knihovny jako žádosti nebo urllib pro vytváření požadavků HTTP, vestavěné analyzátory pro analýzu HTML/XML a další knihovny pro implementaci proxy nebo podpory databází.
Na druhou stranu Scrapy přichází s celým shebangem. Získáte nástroje pro odesílání požadavků, analýzu staženého kódu, provádění operací s extrahovanými daty a ukládání seškrabovaných informací. Do Scrapy můžete přidat další funkce pomocí rozšíření a middlewaru, ale to přijde později.
Se Selenium si stáhnete webový ovladač pro prohlížeč, který chcete automatizovat. Chcete-li implementovat další funkce, jako je úložiště dat a podpora proxy, budete potřebovat moduly třetích stran.
5. Kvalita dokumentace
Celkově je každá projektová dokumentace dobře strukturovaná a popisuje každou metodu pomocí příkladů. Účinnost projektové dokumentace však silně závisí také na čtenáři.
Dokumentace Beautiful Soup je mnohem lepší pro začátečníky, kteří začínají s webovým scrapingem. Selenium a Scrapy mají bezpochyby podrobnou dokumentaci, ale technický žargon dokáže zaskočit mnoho nováčků.
Pokud máte zkušenosti s programovacími koncepty a terminologií, pak by bylo snadné si přečíst kteroukoli z těchto tří dokumentů.
6. Podpora pro rozšíření a middleware
Scrapy je nejrozšiřitelnější rámec Pythonu pro stírání webu, tečka. Podporuje middleware, rozšíření, proxy a další a pomáhá vám vyvinout prolézací modul pro rozsáhlé projekty.
Můžete psát spolehlivé a efektivní prohledávače implementací middlewaru ve Scrapy, což jsou v podstatě háčky, které do výchozího mechanismu rámce přidávají vlastní funkce. Například HttpErrorMiddleware se stará o chyby HTTP, takže se s nimi pavouci nemusí při zpracování požadavků potýkat.
Middleware a rozšíření jsou exkluzivní pro Scrapy, ale podobných výsledků můžete dosáhnout s Beautiful Soup a Selenium pomocí dalších knihoven Pythonu.
7. Vykreslování JavaScriptu
Selenium má jeden případ použití, ve kterém překonává ostatní knihovny webového scrapingu, a to je scraping webových stránek s povoleným JavaScriptem. Ačkoli můžete seškrábat prvky JavaScriptu pomocí middlewaru Scrapy, pracovní postup Selenium je nejjednodušší a nejpohodlnější ze všech.
Pomocí prohlížeče načtete webovou stránku, komunikujete s ní pomocí kliknutí a stisku tlačítek a kdy máte obsah, který potřebujete seškrábat na obrazovku, extrahovat jej pomocí CSS a XPath Selenium selektory.
Beautiful Soup umí vybrat prvky HTML pomocí selektorů XPath nebo CSS. Nenabízí však funkce pro škrábání prvků vykreslených JavaScriptem na webové stránce.
Seškrábání webu snadno s Pythonem
Internet je plný nezpracovaných dat. Web scraping pomáhá převádět tato data na smysluplné informace, které lze dobře využít. Selen je s největší pravděpodobností vaší nejbezpečnější sázkou, pokud chcete odstranit webovou stránku pomocí JavaScriptu nebo potřebujete před extrakcí dat spustit některé prvky na obrazovce.
Scrapy je plnohodnotný webový škrabací framework pro všechny vaše potřeby, ať už chcete napsat malý crawler nebo velký škrabák, který opakovaně prochází internet a hledá aktualizovaná data.
Krásnou polévku můžete použít, pokud jste začátečník nebo potřebujete rychle vyvinout škrabku. Ať už používáte jakýkoli framework nebo knihovnu, je snadné začít se učit web scraping s Pythonem.