Tutorial: Go Spider! Web Scraping con Python e Scrapy

Pubblicato il

(Schwinn Zhang) (19 gennaio 2019)

origine immagine: https://myfigurecollection.net/item/736413

Probabilmente hai sentito parlare di “web scraping”. In caso contrario, il web scraping significa utilizzare un algoritmo informatico per acquisire le informazioni sul target da un sito web. La libreria python Scrapy è stata creata proprio per questo compito. Beautiful Soup è unaltra opzione ma è LENTA. Ad ogni modo, vuoi acquisire questa abilità per la creazione di software, per la scienza dei dati o per il Cremlino (occhiolino). Esiste unabbondanza di tutorial su questo argomento. “Da dove comincio?” “Cè una tabella di marcia per questo?” Dopo aver passato tre giorni a setacciare informazioni buone, cattive e obsolete, sono qui per fornirti questa roadmap di web scraping.

Da dove iniziare

Il mio piano era di seguire i progetti Python in questo elenco . Se hai deciso di iniziare con Twitter Mining , allora BUONA FORTUNA (sarcasticamente) perché sto ancora aspettando che Twitter mi conceda laccesso alla loro API dopo 5 giorni 17 ore e 7 minuti. Quindi, avviso di arretrato! Naturalmente, sono passato al successivo: Scrape un sito web con Python (e MongoDB) . Ho messo MongoDB tra parentesi per semplicità. MongoDB costerà molto tempo e per il mio piccolo programma non è nemmeno necessario. Preferirei far funzionare un web scraper Python totale e aggiungere successivamente la funzionalità MongoDB. La gestione del tempo significa tagliare i fili e arrivare al nocciolo. Software Dev 101. Ad ogni modo, segui questo articolo Scrape a Website with Python (e MongoDB) e avrai unidea di base di come funziona il web scraping.

XPath vs CSS? Scelgo CSS

Poi sono rimasto bloccato su qualcosa chiamato XPath, fondamentalmente, unistruzione basata su URL che indica le informazioni sul target al nostro ragno scout. Dopo unestesa esplorazione del tutorial, ho trovato questo bel gioco di cibo che ti aiuta a imparare e ad esercitarti a scrivere XPath. Se temi ancora XPath, cè un altro modo, che larticolo del tutorial non ha menzionato …

Da Scrapys tutorial nella sua documentazione, ho trovato il mio amico CSS, che ha una sintassi semplice e più diretta. In effetti, la documentazione di Scrapy è il MIGLIOR tutorial. È il più aggiornato, completo e molti tutorial del blog si basano su questo. In questo tutorial, ho trovato il modo migliore per praticare il targeting delle informazioni web attraverso la shell IPython di Scrapy, fondamentalmente un Jupyter Notebook sul tuo terminale. Nella riga di comando, usa

scrapy shell [url tra virgolette]

Quindi segui il tutorial di Scrapy su quotes.toscrape.com. È un esempio ideale perché il sito web è semplice con pochissimi livelli di CSS incorporati. Dopo alcuni round, sei già un ninja giovane. A questo punto, mi sentivo abbastanza sicuro da raschiare tutti i titoli dalla prima pagina del New York Times . Ed ecco, era un compito impossibile a questo punto perché la prima pagina ha una quantità impressionante di incorporamento. Bene, la prima pagina è solo una combinazione curata di articoli di ogni sezione, giusto? Seguendo questa logica, sono stato in grado di andare alla sezione Op-Ed più semplice e alla sezione Art per raschiare con successo tutti i titoli. Ecco il mio repo su git.

Quindi, ecco il mio primo ragno. Avrò bisogno di incorporare più funzioni e caratteristiche. Ma per ora funziona. Puoi vedere tutti i titoli sulla pagina NYT Op-Ed sono stati memorizzati in un file json qui. Ecco uno screenshot. Puoi trovare duplicati qui. Va bene. In seguito possiamo costruire un rilevatore di duplicati. Ho anche intenzione di estrarre da più fonti di notizie e inserire i loro risultati nello stesso file.

NYT Risultati Scraper OpEdTitles. Fonte: Schwinn Zhang

Riepilogo dellalgoritmo Spider

Passaggi successivi

  1. Esegui il debug e / o aggiungi funzionalità al tuo spider
  2. Prova per raschiare un set di dati. Ecco un buon tutorial: Utilizzo di Scrapy per creare il tuo set di dati .

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *