Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Chcesz nauczyć się web scrapingu w Pythonie, ale nie wiesz, czy użyć Beautiful Soup, Selenium czy Scrapy w swoim następnym projekcie? Chociaż wszystkie te biblioteki i frameworki Pythona są potężne same w sobie, nie zaspokajają potrzeb wszystkie potrzeby związane ze skrobaniem stron internetowych, dlatego ważne jest, aby wiedzieć, którego narzędzia należy użyć do konkretnego przypadku stanowisko.

Rzućmy okiem na różnice między Beautiful Soup, Scrapy i Selenium, abyś mógł podjąć mądrą decyzję przed rozpoczęciem kolejnego projektu web scrapingu w Pythonie.

1. Łatwość użycia

Jeśli jesteś początkującym, twoim pierwszym wymaganiem byłaby biblioteka, która jest łatwa do nauczenia się i używania. Beautiful Soup oferuje wszystkie podstawowe narzędzia potrzebne do zeskrobywania sieci, a to szczególnie przydatne dla osób, które mają minimalne doświadczenie z Pythonem, ale chcą zacząć działać z Internetem skrobanie.

instagram viewer

Jedynym zastrzeżeniem jest to, że ze względu na swoją prostotę Beautiful Soup nie jest tak potężny w porównaniu do Scrapy lub Selenium. Programiści z doświadczeniem programistycznym mogą z łatwością opanować zarówno Scrapy, jak i Selenium, ale dla początkujących pierwszy projekt może zająć dużo czasu, jeśli zdecydują się na te frameworki zamiast na Beautiful Zupa.

Aby zeskrobać zawartość tagu tytułu w witrynie example.com za pomocą Beautiful Soup, użyjesz następującego kodu:

adres URL = "https://example.com/"
res = request.get (adres URL).tekst
zupa = PięknaZupa (res, 'html.parser')
tytuł = zupa.znajdź("tytuł").tekst
wydrukować(tytuł)

Aby osiągnąć podobne wyniki przy użyciu Selenium, napisałbyś:

adres URL = "https://example.com"
kierowca = webdriver. Chrom("ścieżka/do/chromedriver")
kierowca.Dostawać(adres URL)
title = driver.find_element (Przez. TAG_NAME, "tytuł").get_attribute('tekst')
wydrukować(tytuł)

Struktura plików projektu Scrapy składa się z wielu plików, co zwiększa jego złożoność. Poniższy kod pobiera tytuł z example.com:

import szorstki

klasaTytułSpider(skrobanie. Pająk):
imię = 'tytuł'
start_urls = ['https://example.com']

pokanalizować(ja, odpowiedź):
dawać {
'nazwa': odpowiedź.css('tytuł'),
}

Jeśli chcesz wyodrębnić dane z usługi oferującej oficjalny interfejs API, może to być mądra decyzja używaj API zamiast tworzyć web scrapera.

2. Szybkość skrobania i równoległość

Spośród tych trzech Scrapy jest wyraźnym zwycięzcą, jeśli chodzi o szybkość. Dzieje się tak, ponieważ domyślnie obsługuje równoległość. Za pomocą Scrapy możesz wysyłać wiele żądań HTTP jednocześnie, a gdy skrypt pobierze kod HTML dla pierwszego zestawu żądań, jest gotowy do wysłania kolejnej partii.

Dzięki Beautiful Soup możesz używać biblioteki wątków do wysyłania równoczesnych żądań HTTP, ale nie jest to wygodne i musisz nauczyć się wielowątkowości, aby to zrobić. W Selenium niemożliwe jest osiągnięcie równoległości bez uruchamiania wielu instancji przeglądarki.

Jeśli miałbyś uszeregować te trzy narzędzia do skrobania sieci pod względem szybkości, Scrapy jest najszybszy, a następnie Beautiful Soup i Selenium.

3. Zużycie pamięci

Selenium to API do automatyzacji przeglądarek, które znalazło swoje zastosowania w pole skrobania sieci. Kiedy używasz Selenium do zeskrobywania strony internetowej, tworzy ona bezgłową instancję przeglądarki, która działa w tle. To sprawia, że ​​Selenium jest narzędziem wymagającym dużych zasobów w porównaniu z Beautiful Soup i Scrapy.

Ponieważ te ostatnie działają całkowicie w wierszu poleceń, zużywają mniej zasobów systemowych i oferują lepszą wydajność niż Selenium.

4. Wymagania dotyczące zależności

Beautiful Soup to zbiór narzędzi do analizowania, które pomagają wyodrębnić dane z plików HTML i XML. Jest dostarczany z niczym innym. Musisz użyć bibliotek takich jak upraszanie Lub urllib do wysyłania żądań HTTP, wbudowane parsery do analizowania HTML/XML oraz dodatkowe biblioteki do implementacji serwerów proxy lub obsługi baz danych.

Scrapy, z drugiej strony, pochodzi z całym shebang. Otrzymujesz narzędzia do wysyłania żądań, analizowania pobranego kodu, wykonywania operacji na wyodrębnionych danych i przechowywania zeskrobanych informacji. Możesz dodać inne funkcjonalności do Scrapy za pomocą rozszerzeń i oprogramowania pośredniczącego, ale to przyjdzie później.

Dzięki Selenium pobierasz sterownik sieciowy dla przeglądarki, którą chcesz zautomatyzować. Aby zaimplementować inne funkcje, takie jak przechowywanie danych i obsługa proxy, potrzebujesz modułów innych firm.

5. Jakość dokumentacji

Ogólnie rzecz biorąc, każda dokumentacja projektu jest dobrze ustrukturyzowana i opisuje każdą metodę za pomocą przykładów. Ale skuteczność dokumentacji projektu w dużym stopniu zależy również od czytelnika.

Dokumentacja Beautiful Soup jest znacznie lepsza dla początkujących, którzy zaczynają od web scrapingu. Selenium i Scrapy mają bez wątpienia szczegółową dokumentację, ale techniczny żargon może zaskoczyć wielu nowicjuszy.

Jeśli masz doświadczenie z pojęciami i terminologiami programistycznymi, przeczytanie dowolnej z trzech dokumentacji będzie bardzo proste.

6. Obsługa rozszerzeń i oprogramowania pośredniczącego

Scrapy to najbardziej rozszerzalny framework Pythona do skrobania stron internetowych, kropka. Obsługuje oprogramowanie pośrednie, rozszerzenia, serwery proxy i wiele innych oraz pomaga opracować robota indeksującego dla projektów na dużą skalę.

Możesz napisać niezawodne i wydajne roboty indeksujące, implementując oprogramowanie pośrednie w Scrapy, które są w zasadzie hakami, które dodają niestandardową funkcjonalność do domyślnego mechanizmu frameworka. Na przykład HttpErrorMiddleware zajmuje się błędami HTTP, więc pająki nie muszą sobie z nimi radzić podczas przetwarzania żądań.

Oprogramowanie pośredniczące i rozszerzenia są dostępne wyłącznie w Scrapy, ale podobne wyniki można osiągnąć za pomocą Beautiful Soup i Selenium, używając dodatkowych bibliotek Pythona.

7. Renderowanie JavaScript

Selenium ma jeden przypadek użycia, w którym przewyższa inne biblioteki do skrobania stron internetowych, a mianowicie skrobanie stron internetowych obsługujących JavaScript. Chociaż możesz zeskrobać elementy JavaScript za pomocą oprogramowania pośredniego Scrapy, przepływ pracy Selenium jest najłatwiejszy i najwygodniejszy ze wszystkich.

Używasz przeglądarki do ładowania strony internetowej, interakcji z nią za pomocą kliknięć i naciśnięć przycisków oraz kiedy masz zawartość, którą musisz zeskrobać na ekranie, wyodrębnij ją za pomocą CSS i XPath Selenium selektory.

Beautiful Soup może wybierać elementy HTML za pomocą selektorów XPath lub CSS. Nie oferuje jednak funkcji zeskrobywania elementów renderowanych w JavaScript na stronie internetowej.

Łatwe przeglądanie stron internetowych dzięki Pythonowi

Internet jest pełen surowych danych. Web scraping pomaga przekształcić te dane w znaczące informacje, które można dobrze wykorzystać. Selenium jest najprawdopodobniej najbezpieczniejszym rozwiązaniem, jeśli chcesz zeskrobać stronę internetową za pomocą JavaScript lub musisz uruchomić niektóre elementy na ekranie przed wyodrębnieniem danych.

Scrapy to pełnoprawna platforma do skrobania stron internetowych, spełniająca wszystkie Twoje potrzeby, niezależnie od tego, czy chcesz napisać małego robota, czy skrobaka na dużą skalę, który wielokrotnie przeszukuje Internet w poszukiwaniu zaktualizowanych danych.

Możesz użyć Pięknej Zupy, jeśli jesteś początkującym lub potrzebujesz szybko rozwinąć skrobak. Bez względu na to, z jakiego frameworka lub biblioteki korzystasz, łatwo jest rozpocząć naukę web scrapingu w Pythonie.