Piękna zupa vs. Scrapy vs. Selen: którego narzędzia do skrobania stron internetowych powinieneś użyć?

Piękna zupa vs. Scrapy vs. Selen: którego narzędzia do skrobania stron internetowych powinieneś użyć?
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ą same w sobie potężne, nie zaspokajają wszystkich potrzeb związanych ze skrobaniem sieci, dlatego ważne jest, aby wiedzieć, którego narzędzia należy użyć do konkretnego zadania.





WYKORZYSTAJ WIDEO DNIA

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żytkowania

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 skrobania sieci i jest szczególnie przydatna dla osób, które mają minimalne doświadczenie z Pythonem, ale chcą rozpocząć przygodę z web scrapingiem.





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 zbudowanie pierwszego projektu może zająć dużo czasu, jeśli wybiorą te frameworki zamiast Beautiful Soup.

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



url = "https://example.com/"
res = requests.get(url).text
soup = BeautifulSoup(res, 'html.parser')
title = soup.find("title").text
print(title)

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

jak wygląda kabel usb
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)

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 scrapy

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

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

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. Wykorzystanie 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.

mój komputer jest zamrożony i kontrola alt delete nie działa

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 krzyczeć 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

  szczegółowa dokumentacja scrapowa

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średniego

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

  kod javascript napisany w edytorze kodu

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, a kiedy masz już zawartość, którą musisz zeskrobać na ekranie, wyodrębnij ją za pomocą selektorów CSS i XPath Selenium.

jak zrobić automat zręcznościowy z malinowym pi

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.​​​​​​