Ho deciso di scrivere questo articolo perché ultimamente mi sto dilettando nella programmazione in Python, linguaggio di programmazione che sto sempre più apprezzando per la sua semplicità di utilizzo rispetto ad altri linguaggi come il PHP.
Sotto alcuni punti di vista, soprattutto per lo scraping e operazioni di “request” è molto più veloce rispetto al PHP, almeno questo è quello che ho potuto constatare nei miei test.
import requests
def get_status_code(url):
try:
richiesta = requests.get(url)
print ("Processato " + url)
if len(r.history) > 0:
catena = ""
code = r.history[0].status_code
url_finale = richiesta.url
for resp in richiesta.history:
catena += resp.url + " | "
return str(code) + '\t' + str(len(richiesta.history)) + '\t' + catena + '\t' + url_finale + '\t'
else:
return str(richiesta.status_code) + '\t\t\t\t'
except requests.ConnectionError:
print("Errore: non sono riuscito a connettermi.")
return '0\t\t\t\t'
input_file = 'urls.txt'
output_file = 'output.txt'
with open(output_file, 'w') as o_file:
o_file.write('URL\tStato\tNumero di Redirect\tCatena Redirect\tURL Finale\t\n')
f = open(input_file, "r")
lines = f.read().splitlines()
for line in lines:
code = get_status_code(line)
o_file.write(line + "\t" + str(code) + "\t\n")
f.close()
Andiamo ad analizzare il codice, blocco per blocco.
Partiamo con il codice!
Abbiamo bisogno delle seguenti librerie
import requests
Se non hai la libreria installata, puoi farlo tramite il comando
pip install requests
In questa parte del codice andiamo a delineare la funzione che verrà lanciata nel main del nostro script in Python.
def get_status_code(url):
try:
richiesta = requests.get(url)
print ("Processato " + url)
if len(richiesta.history) > 0:
catena = ""
code = richiesta.history[0].status_code
url_finale = richiesta.url
for resp in richiesta.history:
catena += resp.url + " | "
return str(code) + '\t' + str(len(richiesta.history)) + '\t' + catena + '\t' + url_finale + '\t'
else:
return str(richiesta.status_code) + '\t\t\t\t'
except requests.ConnectionError:
print("Errore: non sono riuscito a connettermi.")
return '0\t\t\t\t'
Quello che andiamo a fare è molto semplice. Sfruttando la libreria requests analizziamo l’URL che abbiamo tra i parametri della funzione ed il risultato finale che faremo tornare sarà una stringa contenete tutte le informazioni di quel singolo URL, se ci sono delle catene di redirect o lo stato dell’URL (se raggiungibile o se restituisce qualche altro status code).
Poi andiamo ad istanziare le variabili per il file di input e quello di output.
- Quello di input avrà al suo interno una lista di URL.
- L’output sarà un file .txt di appoggio che conterrà il risultato del nostro check.
input_file = 'urls.txt'
output_file = 'output.txt'
Infine andiamo a scrivere il codice che andrà ad aprire il nostro file e analizzerà riga per riga, quindi URL per URL.
with open(output_file, 'w') as o_file:
o_file.write('URL\tStato\tNumero di Redirect\tCatena Redirect\tURL Finale\t\n')
f = open(input_file, "r")
lines = f.read().splitlines()
for line in lines:
code = get_status_code(line)
o_file.write(line + "\t" + str(code) + "\t\n")
f.close()
Alla fine nella nostra directory avremo un file “ouput.txt” che conterrà tutte le informazioni della nostra analisi.
Semplice e veloce. Senza troppi giri di parole.
Buona SEO 🙂
Michele.
Lascia un commento