Raschiatura del Web moderno con BeautifulSoup e selenio

Panoramica

L'HTML è quasi intuitivo Il CSS è un grande progresso che separa in modo pulito la struttura di una pagina dal suo aspetto grafico. JavaScript aggiunge qualche pizazz. Questa è la teoria. Il mondo reale è un po 'diverso.

In questo tutorial, imparerai come il contenuto che vedi nel browser viene effettivamente visualizzato e come procedere per eliminarlo quando necessario. In particolare, imparerai come contare i commenti di Disqus. I nostri strumenti saranno Python e pacchetti fantastici come le richieste, BeautifulSoup e Selenium.

Quando dovresti usare il Web Scraping?

Lo scraping Web è la pratica di recuperare automaticamente il contenuto di pagine Web progettate per interagire con utenti umani, analizzarle ed estrarre alcune informazioni (possibilmente navigando in collegamenti ad altre pagine). A volte è necessario se non c'è altro modo per estrarre le informazioni necessarie. Idealmente, l'applicazione fornisce un'API dedicata per l'accesso ai dati a livello di programmazione. Ci sono diversi motivi per cui scraping web dovrebbe essere l'ultima risorsa:

  • È fragile (le pagine web che stai raschiando potrebbero cambiare frequentemente).
  • Potrebbe essere vietato (alcune applicazioni web hanno politiche contro lo scraping).
  • Potrebbe essere lento ed espansivo (se hai bisogno di recuperare e guadare un sacco di rumore).

Comprendere le pagine Web del mondo reale

Comprendiamo cosa stiamo affrontando, esaminando l'output di alcuni codici di applicazioni Web comuni. Nell'articolo Introduzione a Vagrant, ci sono alcuni commenti di Disqus nella parte inferiore della pagina:

Per poter analizzare questi commenti, dobbiamo prima trovarli sulla pagina.

Visualizza origine pagina

Ogni browser sin dall'alba dei tempi (anni '90) ha supportato la possibilità di visualizzare l'HTML della pagina corrente. Ecco uno snippet dalla sorgente della vista di Introduzione a Vagrant che inizia con una grossa porzione di JavaScript minorato e snellito non correlato all'articolo stesso. Ecco un piccolo parte di esso:

Ecco alcuni HTML effettivi dalla pagina:

Questo sembra abbastanza disordinato, ma ciò che sorprende è che non troverete i commenti di Disqus nell'origine della pagina.

The Mighty Inline Frame

Si scopre che la pagina è un mashup e che i commenti di Disqus sono incorporati come elementi iframe (inline frame). Puoi scoprirlo facendo clic con il pulsante destro del mouse nell'area dei commenti e vedrai che ci sono informazioni sul frame e la fonte lì:

Ciò ha senso. Incorporare contenuti di terze parti come iframe è uno dei motivi principali per utilizzare gli iframe. Cerchiamo il