Python Web Scraping - Siti web basati su moduli

Nel capitolo precedente, abbiamo visto raschiare siti web dinamici. In questo capitolo, comprendiamo lo scraping di siti Web che funzionano su input basati sull'utente, ovvero siti Web basati su moduli.

introduzione

In questi giorni il WWW (World Wide Web) si sta muovendo verso i social media così come i contenuti generati dagli utenti. Quindi sorge la domanda su come possiamo accedere a questo tipo di informazioni che sono oltre la schermata di accesso? Per questo dobbiamo occuparci di moduli e accessi.

Nei capitoli precedenti, abbiamo lavorato con il metodo HTTP GET per richiedere informazioni, ma in questo capitolo lavoreremo con il metodo HTTP POST che invia le informazioni a un server web per l'archiviazione e l'analisi.

Interagire con i moduli di accesso

Mentre lavori su Internet, devi aver interagito molte volte con i moduli di accesso. Possono essere molto semplici come includere solo pochi campi HTML, un pulsante di invio e una pagina di azione oppure possono essere complicati e avere alcuni campi aggiuntivi come e-mail, lasciare un messaggio insieme a captcha per motivi di sicurezza.

In questa sezione, ci occuperemo di un semplice modulo di invio con l'aiuto della libreria di richieste Python.

Innanzitutto, dobbiamo importare la libreria delle richieste come segue:

import requests

Ora, dobbiamo fornire le informazioni per i campi del modulo di accesso.

parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}

Nella riga di codice successiva, dobbiamo fornire l'URL su cui verrà eseguita l'azione del modulo.

r = requests.post(“enter the URL”, data = parameters)
print(r.text)

Dopo aver eseguito lo script, restituirà il contenuto della pagina in cui è avvenuta l'azione.

Supponi di voler inviare qualsiasi immagine con il modulo, allora è molto facile con richieste.post (). Puoi capirlo con l'aiuto del seguente script Python -

import requests
file = {‘Uploadfile’: open(’C:\Usres\desktop\123.png’,‘rb’)}
r = requests.post(“enter the URL”, files = file)
print(r.text)

Caricamento dei cookie dal server Web

Un cookie, a volte chiamato cookie web o cookie internet, è una piccola porzione di dati inviati da un sito web e il nostro computer lo memorizza in un file situato all'interno del nostro browser web.

Nell'ambito della gestione dei moduli di login, i cookie possono essere di due tipi. Uno, abbiamo trattato nella sezione precedente, che ci consente di inviare informazioni a un sito Web e il secondo che ci consente di rimanere in uno stato di "accesso" permanente durante la nostra visita al sito Web. Per il secondo tipo di moduli, i siti web utilizzano i cookie per tenere traccia di chi è loggato e chi no.

Cosa fanno i cookies?

Oggigiorno la maggior parte dei siti web utilizza i cookie per il tracciamento. Possiamo capire il funzionamento dei cookie con l'aiuto dei seguenti passaggi:

Step 1- Innanzitutto, il sito autenticherà le nostre credenziali di accesso e le memorizzerà nel cookie del nostro browser. Questo cookie generalmente contiene un toke generato dal server, un timeout e informazioni di tracciamento.

Step 2- Successivamente, il sito Web utilizzerà il cookie come prova di autenticazione. Questa autenticazione viene sempre mostrata ogni volta che visitiamo il sito web.

I cookie sono molto problematici per i web scrapers perché se i web scrapers non tengono traccia dei cookie, il modulo inviato viene rispedito e alla pagina successiva sembra che non abbiano mai effettuato l'accesso. È molto facile tenere traccia dei cookie con l'aiuto di Pitone requests libreria, come mostrato di seguito -

import requests
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = requests.post(“enter the URL”, data = parameters)

Nella riga di codice sopra, l'URL sarebbe la pagina che fungerà da processore per il modulo di accesso.

print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)

Dopo aver eseguito lo script precedente, recupereremo i cookie dal risultato dell'ultima richiesta.

C'è un altro problema con i cookie che a volte i siti web modificano frequentemente i cookie senza preavviso. Questo tipo di situazione può essere affrontatarequests.Session() come segue -

import requests
session = requests.Session()
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = session.post(“enter the URL”, data = parameters)

Nella riga di codice sopra, l'URL sarebbe la pagina che fungerà da processore per il modulo di accesso.

print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)

Osserva che puoi facilmente capire la differenza tra script con sessione e senza sessione.

Automatizzare i moduli con Python

In questa sezione ci occuperemo di un modulo Python chiamato Mechanize che ridurrà il nostro lavoro e automatizzerà il processo di compilazione dei moduli.

Modulo Mechanize

Il modulo Mechanize ci fornisce un'interfaccia di alto livello per interagire con i moduli. Prima di iniziare ad usarlo dobbiamo installarlo con il seguente comando:

pip install mechanize

Nota che funzionerebbe solo in Python 2.x.

Esempio

In questo esempio, automatizzeremo il processo di compilazione di un modulo di accesso con due campi: email e password:

import mechanize
brwsr = mechanize.Browser()
brwsr.open(Enter the URL of login)
brwsr.select_form(nr = 0)
brwsr['email'] = ‘Enter email’
brwsr['password'] = ‘Enter password’
response = brwsr.submit()
brwsr.submit()

Il codice sopra è molto facile da capire. Innanzitutto, abbiamo importato il modulo di meccanizzazione. Quindi è stato creato un oggetto browser Mechanize. Quindi, siamo passati all'URL di accesso e abbiamo selezionato il modulo. Successivamente, i nomi ei valori vengono passati direttamente all'oggetto browser.