Tutorial Scrapy: come creare un web-crawler usando Scrapy?



In questo articolo del tutorial Scrapy imparerai a creare un web-crawler con varie tecniche di estrazione dei dati e modi per archiviare i dati su un database.

Il web scraping è un modo efficace per raccogliere dati dalle pagine web, è diventato uno strumento efficace in . Con vari biblioteche presente per il web scraping come , il lavoro di un data scientist diventa ottimale. Scrapy è un potente framework web utilizzato per l'estrazione, l'elaborazione e la memorizzazione dei dati. Impareremo come creare un web crawler in questo tutorial scrapy, di seguito sono riportati gli argomenti discussi in questo blog:

Cos'è Scrapy?

Scrapy è un framework di scansione web gratuito e open source scritto in python. Originariamente era stato progettato per funzionare , ma può essere utilizzato anche per estrarre i dati utilizzando le API. È mantenuto da Scrapinghub ltd.





Scrapy è un pacchetto completo quando si tratta di scaricare le pagine web, elaborare e archiviare i dati su .

È come una centrale elettrica quando si tratta di raschiare il web con diversi modi per raschiare un sito web. Scrapy gestisce facilmente attività più grandi, raschiando più pagine o un gruppo di URL in meno di un minuto. Utilizza un twister che funziona in modo asincrono per ottenere la concorrenza.



Fornisce contratti spider che ci consentono di creare crawler generici e deep crawler. Scrapy fornisce anche pipeline di elementi per creare funzioni in uno spider in grado di eseguire varie operazioni come la sostituzione di valori nei dati, ecc.

scrapy architecture-scrapy tutorial-edureka

Cos'è un web-crawler?

Un web-crawler è un programma che cerca automaticamente i documenti sul web. Sono principalmente programmati per azioni ripetitive per la navigazione automatica.

Come funziona?



Un web-crawler è abbastanza simile a un bibliotecario. Cerca le informazioni sul Web, classifica le informazioni e quindi le indicizza e cataloga le informazioni affinché le informazioni sottoposte a scansione vengano recuperate e archiviate di conseguenza.

Le operazioni che verranno eseguite dal crawler vengono create in anticipo, quindi il crawler esegue automaticamente tutte quelle operazioni che creeranno un indice. È possibile accedere a questi indici da un software di output.

Diamo un'occhiata alle varie applicazioni per cui un web crawler può essere utilizzato:

  • I portali di confronto dei prezzi cercano dettagli di prodotti specifici per confrontare i prezzi su piattaforme diverse utilizzando un web-crawler.

  • Un web-crawler gioca un ruolo molto importante nel campo del data mining per il recupero delle informazioni.

  • Gli strumenti di analisi dei dati utilizzano i web crawler per calcolare i dati per le visualizzazioni di pagina, i link in entrata e in uscita.

  • I crawler servono anche agli hub di informazioni per raccogliere dati come portali di notizie.

Come installare Scrapy?

Per installare scrapy sul tuo sistema, si consiglia di installarlo su un virtualenv dedicato. L'installazione funziona in modo abbastanza simile a qualsiasi altro pacchetto in Python, se stai usando conda ambiente, utilizzare il seguente comando per installare scrapy:

conda install -c conda-forge scrapy

puoi anche utilizzare l'ambiente pip per installare scrapy,

pip installa scrapy

Potrebbero esserci alcune dipendenze di compilazione a seconda del sistema operativo. Scrapy è scritto in puro python e può dipendere da alcuni pacchetti python come:

  • lxml - È un efficiente parser XML e HTML.

  • parcel - Una libreria di estrazione HTML / XML scritta in primo piano su lxml

  • W3lib - È un aiuto multiuso per gestire URL e codifiche di pagine web

  • twisted - Un framework di rete asincrono

  • crittografia: aiuta in varie esigenze di sicurezza a livello di rete

Avvio del tuo primo progetto scrapy

Per iniziare il tuo primo progetto scrapy, vai nella directory o posizione in cui desideri salvare i tuoi file ed esegui il seguente comando

scrapy startproject nome progetto

Dopo aver eseguito questo comando, otterrai le seguenti directory create in quella posizione.

  • Nome del progetto/

    • scrapy.cfg: distribuisce il file di configurazione

  • Nome del progetto/

    • __init__.py: modulo python del progetto

    • items.py: file di definizione degli elementi del progetto

    • middlewares.py: file dei middleware del progetto

    • pipelines.py: file pipeline di progetto

    • settings.py: file delle impostazioni del progetto

  • ragni /

    • __init__.py: una directory in cui in seguito inserirai i tuoi spider

Realizzare il tuo primo ragno

I ragni sono classi che definiamo e che scrapy usa per raccogliere informazioni dal web. Devi sottoclassare scrapy.Spider e definire le richieste iniziali da fare.

Scrivi il codice per il tuo spider in un file python separato e lo salvi nella directory projectname / spiders nel tuo progetto.

quotes_spider.py

import scrapy class QuotesSpider (scrapy.Spider): name = 'quotes' def start_request (self): urls = ['http://quotes.toscrape.com/page/1/', http://quotes.toscrape.com / page / 2 /,] per l'URL negli URL: yield scrapy.Request (url = url, callback = self.parse) def parse (self, response): page = response.url.split ('/') [- 2 ] filename = 'quotes-% s.html'% pagina con open (filename, 'wb') come f: f.write (response.body) self.log ('file salvato% s'% filename)

Come puoi vedere, abbiamo definito varie funzioni nei nostri spider,

cos'è il deadlock in java
  • nome: identifica il ragno, deve essere unico in tutto il progetto.

  • start_requests (): deve restituire un iterabile di richieste con cui lo spider inizierà a eseguire la scansione.

  • parse (): è un metodo che verrà chiamato per gestire la risposta scaricata con ogni richiesta.

Estrazione dei dati

Fino ad ora lo spider non estrae alcun dato, ma salvava solo l'intero file HTML. Un ragno scrapy genera in genere molti dizionari contenenti i dati estratti dalla pagina. Usiamo la parola chiave yield in python nel callback per estrarre i dati.

import scrapy class QuotesSpider (scrapy.Spider): name = 'quotes' start_urls = [http://quotes.toscrape.com/page/1/ ', http://quotes.toscrape.com/page/2/,] def parse (self, response): for quote in response.css ('div.quote'): yield {'text': quote.css (span.text :: text '). get (),' author ': quote .css (small.author::text ') get (),' tags ': quote.css (div.tags a.tag :: text'). getall ()}

Quando esegui questo spider, produrrà i dati estratti con il registro.

Memorizzazione dei dati

Il modo più semplice per memorizzare i dati estratti è utilizzare le esportazioni di feed, utilizzare il seguente comando per memorizzare i dati.

citazioni di scansione scrapy -o quotes.json

Questo comando genererà un file quotes.json contenente tutti gli elementi raschiati, serializzati in formato JSON .

Questo ci porta alla fine di questo articolo in cui abbiamo appreso come creare un web-crawler utilizzando scrapy in python per eseguire lo scrapy di un sito Web ed estrarre i dati in un file JSON. Spero che tu sia chiaro con tutto ciò che è stato condiviso con te in questo tutorial.

Se hai trovato pertinente questo articolo su 'Tutorial Scrapy', controlla il una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo.

Siamo qui per aiutarti in ogni fase del tuo viaggio e per elaborare un curriculum progettato per studenti e professionisti che vogliono essere un . Il corso è progettato per darti un vantaggio nella programmazione Python e addestrarti per i concetti di base e avanzati di Python insieme a vari piace

Se incontri delle domande, sentiti libero di porre tutte le tue domande nella sezione commenti di 'Tutorial Scrapy' e il nostro team sarà lieto di rispondere.