Różnica między BeautifulSoup a Scrapy Crawlerem?

134

Chcę stworzyć stronę internetową pokazującą porównanie cen produktów amazon i e-bay. Który z nich będzie działał lepiej i dlaczego? Jestem trochę zaznajomiony z BeautifulSoup, ale nie za bardzo z crawlerem Scrapy .

Nishant Bhakta
źródło
6
Dlaczego miałbyś używać robotów indeksujących, skoro obie te witryny mają świetny interfejs API? aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose
5
Jestem z Indii i myślę, że Amazon-Api nie obsługuje hosta z Indii. nie ma interfejsu API (języka) dla Indii. HOSTS = {'ca': 'ecs.amazonaws.ca', 'cn': 'webservices.amazon.cn', 'de': 'ecs.amazonaws.de', 'es': 'webservices.amazon.es' , „fr”: „ecs.amazonaws.fr”, „it”: „webservices.amazon.it”, „jp”: „ecs.amazonaws.jp”, „uk”: „ecs.amazonaws.co.uk” , 'us': 'ecs.amazonaws.com',}
Nishant Bhakta
11
A co jeśli chcę zaindeksować inną witrynę, która nie ma interfejsu API?
Nishant Bhakta
@InbarRose Korzystanie z interfejsu API produktu Amazon wymaga konta Amazon Associate.
Zachary Ryan Smith

Odpowiedzi:

231

Scrapy to szkielet sieciowy lub skrobak sieciowy. Dajesz Scrapy główny adres URL, aby rozpocząć indeksowanie, a następnie możesz określić ograniczenia dotyczące liczby (liczby) adresów URL, które chcesz indeksować i pobierać itp. Jest to kompletna platforma do skanowania lub indeksowania stron internetowych .

Podczas

BeautifulSoup to biblioteka analizująca która również całkiem nieźle radzi sobie z pobieraniem zawartości z adresu URL i pozwala na bezproblemowe analizowanie niektórych ich części. Pobiera tylko zawartość podanego adresu URL, a następnie zatrzymuje się. Nie indeksuje, chyba że ręcznie umieścisz go w nieskończonej pętli z określonymi kryteriami.

Krótko mówiąc, z Beautiful Soup możesz zbudować coś podobnego do Scrapy. Beautiful Soup to biblioteka, a Scrapy to kompletny framework .

Źródło

Medeiros
źródło
1
co jest szybsze, mam na myśli, że używam BeautifulSoup i usunięcie danych zajmuje około 10 sekund? czy scrapy jest szybsze niż beautifulsoup?
shuboy2014
Jeśli używasz beautifulsoup z kodem blokującym, scrapy powinno być szybsze, o ile istnieją niezależne żądania do wykonania, ale myślę, że możesz również użyć beautifulsoup z asyncio, aby osiągnąć lepszą wydajność.
dyeray
Powiedziałbym, że Scrapy wraz z BeautifulSoup będą super szybkie i będziesz w stanie wydobyć z obu to, co najlepsze.
Rahul
18

Myślę, że oba są dobre ... Robię teraz projekt, który używa obu. Najpierw usuwam wszystkie strony za pomocą scrapy i zapisuję je w kolekcji mongodb przy użyciu ich potoków, pobierając również obrazy, które istnieją na stronie. Następnie używam BeautifulSoup4, aby wykonać przetwarzanie poz, w którym muszę zmienić wartości atrybutów i uzyskać specjalne znaczniki.

Jeśli nie wiesz, które strony produktów chcesz, dobrym narzędziem będzie scrapy, ponieważ możesz użyć ich robotów do uruchamiania wszystkich witryn amazon / ebay w poszukiwaniu produktów bez tworzenia wyraźnej pętli for.

Spójrz na dokumentację scrapy, jest bardzo prosta w użyciu.

rdenadai
źródło
Czy mogę więc używać Scrapy na serwerze WWW, ponieważ istnieje wiele jego zależności, takich jak (Twisted, pywin32, pyOpenSSL ete ..). (Przepraszam za to głupie pytanie, jestem nowy w Pythonie)
Nishant Bhakta
Na serwerze WWW? Nigdy tego nie próbuję ... Używam tego na powłoce, wykonuję "scrapy crawl <nazwa robota>", aby uruchomić pająka ... być może mógłbyś użyć tego na serwerze, ale musisz to wywołać używając Pythona moduł podprocesu ( docs.python.org/2/library/subprocess.html ). Jak powiedziałem, nigdy tego nie próbuj, ale może to zadziała ... tylko uwaga, użyj komunikatu dziennika z scrapy tylko po to, aby wiedzieć, gdzie mogą wystąpić błędy w twoim robocie (z dziennika importu scrapy).
rdenadai
4

Oba używają do analizowania danych.

Scrapy :

  • Scrapy to szybka platforma do indeksowania i skrobania sieci na wysokim poziomie, używana do indeksowania witryn internetowych i wyodrębniania ustrukturyzowanych danych z ich stron.
  • Ale ma pewne ograniczenia, gdy dane pochodzą ze skryptu java lub ładują się dynamicznie, możemy je pokonać, używając pakietów takich jak splash, selen itp.

Piękna Zupa :

  • Beautiful Soup to biblioteka Pythona do pobierania danych z plików HTML i XML.

  • możemy użyć tego pakietu do pobierania danych ze skryptu java lub dynamicznego ładowania stron.

Scrapy z BeautifulSoup to jedno z najlepszych combo, z jakim możemy pracować do zgarniania statycznych i dynamicznych treści

Arun Augustine
źródło
2

Sposób, w jaki to robię, polega na korzystaniu z API eBay / Amazon zamiast scrapy, a następnie analizuję wyniki za pomocą BeautifulSoup.

Interfejsy API zapewniają oficjalny sposób uzyskiwania tych samych danych, które można uzyskać od robota indeksującego, bez konieczności martwienia się o ukrywanie swojej tożsamości, bałagan z serwerami proxy itp.

baldnbad
źródło
8
Pytanie wyraźnie dotyczy rozwiązań, w których API nie są dostępne.
Rohanil
2

Scrapy Jest to framework do skrobania sieci, który zawiera mnóstwo dodatków, które ułatwiają skrobanie, dzięki czemu możemy skupić się tylko na logice indeksowania. Oto niektóre z moich ulubionych rzeczy, którymi zajmuje się scrapy.

  • Eksport kanałów: w zasadzie pozwala nam zapisywać dane w różnych formatach, takich jak CSV, JSON, jsonlines i XML.
  • Skrobanie asynchroniczne: Scrapy wykorzystuje skręconą strukturę, która daje nam możliwość odwiedzania wielu adresów URL jednocześnie, gdzie każde żądanie jest przetwarzane w sposób nieblokujący (w zasadzie nie musimy czekać na zakończenie żądania przed wysłaniem kolejnego żądania).
  • Selektory : Tutaj możemy porównać scrapy z piękną zupą. Selektory pozwalają nam wybrać określone dane ze strony internetowej, takie jak nagłówek, określony element div z nazwą klasy itp.). Scrapy używa lxml do parsowania, co jest niezwykle szybkie niż piękna zupa.
  • Ustawienie proxy, klienta użytkownika, nagłówków itp .: scrapy pozwala nam dynamicznie ustawiać i obracać proxy i inne nagłówki.

  • Potoki pozycji : potoki umożliwiają nam przetwarzanie danych po ekstrakcji. Na przykład możemy skonfigurować potok do wysyłania danych na Twój serwer mysql.

  • Pliki cookie: Scrapy automatycznie obsługuje dla nas pliki cookie.

itp.

TLDR: scrapy to framework, który zapewnia wszystko, czego można potrzebować do tworzenia przeszukiwań na dużą skalę. Udostępnia różne funkcje, które ukrywają złożoność przeszukiwania sieci. można po prostu zacząć pisać roboty internetowe, nie martwiąc się o obciążenie związane z konfiguracją.

Beautiful soup Beautiful Soup to pakiet w Pythonie do analizowania dokumentów HTML i XML . Więc za pomocą Beautiful soup możesz przeanalizować stronę internetową, która została już pobrana. BS4 jest bardzo popularny i stary. W przeciwieństwie do scrapy, nie możesz użyć pięknej zupy tylko do zrobienia crawlerów . Będziesz potrzebować innych bibliotek, takich jak requesty, urllib itp., Aby tworzyć roboty z bs4. Znów oznacza to, że musisz zarządzać listą przeszukiwanych adresów URL, być indeksowanym, obsługiwać pliki cookie, zarządzać serwerem proxy, obsługiwać błędy, tworzyć własne funkcje do przesyłania danych do CSV, JSON, XML itp. Jeśli chcesz przyspieszyć niż będziesz musiał używać innych bibliotek, takich jak przetwarzanie wieloprocesowe .

Podsumowując.

  • Scrapy to bogaty framework, którego możesz użyć do rozpoczęcia pisania robotów bez żadnych kłopotów.

  • Piękna zupa to biblioteka, której możesz użyć do przeanalizowania strony internetowej. Nie można go używać samodzielnie do zeskrobywania sieci.

Zdecydowanie powinieneś użyć Scrapy na swojej stronie porównującej ceny produktów Amazon i e-bay. Możesz zbudować bazę danych adresów URL i codziennie uruchamiać robota (zadania cron, seler do planowania indeksowania) i aktualizować cenę w bazie danych, dzięki czemu Twoja witryna będzie zawsze pobierana z bazy danych, a robot i baza danych będą działać jako poszczególne komponenty.

Amit
źródło
1

BeautifulSoup to biblioteka, która umożliwia wyodrębnianie informacji ze strony internetowej.

Z drugiej strony Scrapy to framework, który robi powyższe rzeczy i wiele innych rzeczy, których prawdopodobnie potrzebujesz w swoim projekcie skrobania, takich jak potoki do zapisywania danych.

Możesz sprawdzić ten blog, aby rozpocząć korzystanie ze Scrapy https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/

Jaskaran Singh
źródło
0

Używając scrapy możesz zaoszczędzić mnóstwo kodu i zacząć od programowania strukturalnego. Jeśli nie podoba ci się żadna z gotowych metod scapy, możesz użyć BeautifulSoup zamiast metody scrapy. Duży projekt ma obie zalety.

ethirajit
źródło
0

Różnic jest wiele, a wybór dowolnego narzędzia / technologii zależy od indywidualnych potrzeb.

Kilka głównych różnic to:

  1. BeautifulSoup jest stosunkowo łatwa do nauczenia niż Scrapy.
  2. Rozszerzenia, wsparcie, społeczność są większe dla Scrapy niż dla BeautifulSoup.
  3. Scrapy należy traktować jako Pająka, podczas gdy BeautifulSoup jest Parserem .
krish___na
źródło