Krásná polévka vs. Scrapy vs. Selen: Který nástroj na škrábání webu byste měli použít?

Krásná polévka vs. Scrapy vs. Selen: Který nástroj na škrábání webu byste měli použít?
Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

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 frameworky Pythonu samy o sobě výkonné, neuspokojují všechny potřeby webového scrapingu, a proto je důležité vědět, který nástroj byste měli pro konkrétní práci použít.





VYUŽITÍ VIDEA DNE

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. Snadné 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 ke škrábání webu, a je to užitečné zejména pro lidi, kteří mají minimální zkušenosti s Pythonem, ale chtějí se škrábat na web.





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 mohou snadno zvládnout Scrapy i Selenium, ale začátečníkům může stavba prvního projektu zabrat spoustu času, pokud se rozhodnou použít tyto frameworky místo Beautiful Soup.

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 = requests.get(url).text
soup = BeautifulSoup(res, 'html.parser')
title = soup.find("title").text
print(title)

Chcete-li dosáhnout podobných výsledků pomocí selenu, napište:

url = "https://example.com"
driver = webdriver.Chrome("path/to/chromedriver")
driver.get(url)
title = driver.find_element(By.TAG_NAME, "title").get_attribute('text')
print(title)

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 scrapy

class TitleSpider(scrapy.Spider):
name = 'title'
start_urls = ['https://example.com']

def parse(self, response):
yield {
'name': response.css('title'),
}

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 ječící 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

  podrobná odpadová 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.

jak hacknout zařízení připojená k mé wifi

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í middlewarů 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

  javascriptový kód napsaný v editoru kódu

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 až budete mít obsah, který potřebujete seškrábnout na obrazovku, extrahujte jej pomocí Selenium's CSS a selektorů XPath.

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 seškrábat web 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.​