Differenza tra BeautifulSoup e Scrapy crawler?


134

Voglio creare un sito Web che mostri il confronto tra Amazon e il prezzo del prodotto e-bay. Quale di questi funzionerà meglio e perché? Ho una certa familiarità con BeautifulSoup ma non tanto con il crawler Scrapy .


6
Perché dovresti usare i crawler quando entrambi quei siti hanno una grande API? aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose

5
vengo dall'India e penso che Amazon-Api non supporti l'host dell'India. non esiste api (locale) per l'India. 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
E se volessi eseguire la scansione di altri siti che non dispongono di API?
Nishant Bhakta,

@InbarRose L'utilizzo dell'API del prodotto Amazon richiede un account Amazon Associate.
Zachary Ryan Smith,

Risposte:


231

Scrapy è un framework Web-spider o web scraper , dai a Scrapy un URL di root per iniziare la scansione, quindi puoi specificare i vincoli su quanti (numero di) URL vuoi scansionare e recuperare, ecc. È un framework completo per il web scraping o la scansione .

Mentre

BeautifulSoup è una libreria di analisi che fa anche un ottimo lavoro nel recuperare i contenuti dall'URL e consente di analizzarne alcune parti senza problemi. Recupera solo i contenuti dell'URL che dai e poi si ferma. Non esegue la scansione a meno che non venga inserito manualmente in un ciclo infinito con determinati criteri.

In parole semplici, con Beautiful Soup puoi costruire qualcosa di simile a Scrapy. Beautiful Soup è una libreria mentre Scrapy è un framework completo .

fonte


1
che è più veloce, intendo che sto usando BeautifulSoup e ci vogliono circa 10 secondi per scartare i dati? raschia più veloce di beautifulsoup?
shuboy2014,

Se usi beautifulsoup con il codice di blocco, scrapy dovrebbe essere più veloce fintanto che ci sono richieste indipendenti da fare, ma immagino che puoi anche usare beautifulsoup con asyncio per ottenere prestazioni migliori.
dyeray,

Direi che Scrapy insieme a BeautifulSoup sarà super veloce e sarai in grado di ottenere il meglio da entrambi.
Rahul,

18

Penso che entrambi stiano bene ... sto facendo un progetto in questo momento che li uso entrambi. Per prima cosa ho scartato tutte le pagine usando scrapy e l'ho salvato su una raccolta mongodb usando le loro pipeline, scaricando anche le immagini che esistono sulla pagina. Dopodiché uso BeautifulSoup4 per fare un'elaborazione pos dove devo cambiare i valori degli attributi e ottenere alcuni tag speciali.

Se non sai quali prodotti delle pagine desideri, un buon strumento sarà scarso poiché puoi utilizzare i loro crawler per eseguire tutto il sito Web Amazon / eBay alla ricerca dei prodotti senza creare un loop esplicito.

Dai un'occhiata alla documentazione scadente, è molto semplice da usare.


Quindi posso usare Scrapy sul web server perché ci sono molte dipendenze come (Twisted, pywin32, pyOpenSSL ete ..). (Mi dispiace per questa domanda stupida, sono nuovo di Python)
Nishant Bhakta,

Sul web server? Non ci provo mai ... lo uso sulla shell, eseguo il "crawl <nome del crawler>" per eseguire il ragno ... forse potresti usarlo sul server, ma devi chiamarlo usando Python modulo di sottoprocesso ( docs.python.org/2/library/subprocess.html ). Come ho già detto, non provare mai questo, ma forse potrebbe funzionare ... solo una nota, usa il messaggio di registro di scrapy solo per farti sapere dove potrebbero verificarsi errori sul tuo crawler (dal registro di importazione scrapy).
rdenadai,

4

Entrambi stanno usando per analizzare i dati.

Scrapy :

  • Scrapy è un framework di scansione e web scraping rapido di alto livello, utilizzato per eseguire la scansione di siti Web ed estrarre dati strutturati dalle loro pagine.
  • Ma ha alcune limitazioni quando i dati provengono dallo script java o dal caricamento dinamico, possiamo superarli usando pacchetti come splash, selenium ecc.

BeautifulSoup :

  • Beautiful Soup è una libreria Python per estrarre dati da file HTML e XML.

  • possiamo usare questo pacchetto per ottenere dati dallo script java o caricare pagine dinamicamente.

Scrapy con BeautifulSoup è uno dei migliori combo con cui possiamo lavorare per raschiare contenuti statici e dinamici


2

Il modo in cui lo faccio è usare l'API di eBay / Amazon piuttosto che scarabocchiare e quindi analizzare i risultati usando BeautifulSoup.

Le API ti offrono un modo ufficiale per ottenere gli stessi dati che avresti ottenuto dal crawler scrapy, senza preoccuparti di nascondere la tua identità, fare casino con i proxy, ecc.


8
La domanda chiede chiaramente soluzioni in cui le API non sono disponibili.
Rohanil,

2

Scrapy È un framework di scraping del web che viene fornito con tonnellate di chicche che facilitano la raschiatura in modo che possiamo concentrarci solo sulla logica di scansione. Di seguito sono riportate alcune delle mie cose preferite che scrapy si prende cura di noi.

  • Esportazioni di feed : sostanzialmente ci consente di salvare i dati in vari formati come CSV, JSON, jsonlines e XML.
  • Scraping asincrono: Scrapy utilizza un framework twistato che ci dà il potere di visitare più URL contemporaneamente in cui ogni richiesta viene elaborata in modo non bloccante (in pratica non dobbiamo aspettare che una richiesta finisca prima di inviarne un'altra).
  • Selettori : è qui che possiamo paragonare lo scrapy alla bella zuppa. I selettori sono ciò che ci consente di selezionare determinati dati dalla pagina Web come titolo, determinati div con un nome di classe ecc.). Scrapy utilizza lxml per l'analisi, che è estremamente veloce rispetto alla bella zuppa.
  • Impostazione proxy, agente utente, intestazioni ecc: scrapy ci consente di impostare e ruotare proxy e altre intestazioni in modo dinamico.

  • Pipeline di articoli : le pipeline ci consentono di elaborare i dati dopo l'estrazione. Ad esempio, possiamo configurare la pipeline per inviare i dati al tuo server mysql.

  • Cookie: scrapy gestisce automaticamente i cookie per noi.

eccetera.

TLDR: scrapy è un framework che fornisce tutto ciò che potrebbe essere necessario per creare ricerche per indicizzazione su larga scala. Fornisce varie funzionalità che nascondono la complessità della scansione dei nastri. si può semplicemente iniziare a scrivere web crawler senza preoccuparsi del carico di installazione.

Beautiful soup Beautiful Soup è un pacchetto Python per l' analisi di documenti HTML e XML . Quindi con Beautiful soup puoi analizzare una pagina web che è già stata scaricata. BS4 è molto popolare e vecchio. A differenza di scrapy, non puoi usare una bella zuppa solo per fare i crawler . Avrai bisogno di altre librerie come richieste, urllib ecc. Per creare crawler con bs4. Ancora una volta, questo significa che dovresti gestire l'elenco degli URL sottoposti a scansione, da sottoporre a scansione, gestire i cookie, gestire il proxy, gestire gli errori, creare le tue funzioni per inviare i dati a CSV, JSON, XML ecc. Se vuoi velocizzare di quanto dovrete usare altre librerie come il multiprocessing .

Per riassumere.

  • Scrapy è un framework ricco che è possibile utilizzare per iniziare a scrivere crawler senza problemi.

  • La bella zuppa è una libreria che puoi usare per analizzare una pagina web. Non può essere utilizzato da solo per raschiare il web.

Dovresti assolutamente usare scrapy per il tuo sito web di confronto dei prezzi dei prodotti Amazon e e-bay. È possibile creare un database di URL ed eseguire il crawler ogni giorno (cron lavori, sedano per la pianificazione di ricerche per indicizzazione) e aggiornare il prezzo sul database. In questo modo il sito Web verrà sempre estratto dal database e il crawler e il database fungeranno da singoli componenti.



0

Usando scrapy puoi risparmiare tonnellate di codice e iniziare con la programmazione strutturata, se non ti piacciono i metodi pre-scritti di Scapy, allora BeautifulSoup può essere usato al posto del metodo scrapy. Il grande progetto ha entrambi i vantaggi.


0

Le differenze sono molte e la selezione di qualsiasi strumento / tecnologia dipende dalle esigenze individuali.

Poche differenze principali sono:

  1. BeautifulSoup è relativamente facile da imparare rispetto a Scrapy.
  2. Le estensioni, il supporto e la community sono più grandi per Scrapy che per BeautifulSoup.
  3. Scrapy dovrebbe essere considerato come un ragno mentre BeautifulSoup è un parser .
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.