Scraping Web con Python (Libreria + Framework)

In qualità di sviluppatore Python, sono disponibili molti strumenti di web scraping che puoi utilizzare. Entra subito per scoprire questi strumenti e imparare a metterli in pratica.

Raschiare con Python

Non è una novità affermare che Python sia il linguaggio di programmazione più popolare per il web scraping, e questo non è estraneo al fatto che è semplice da imparare e utilizzare, oltre ad avere un buon numero di popolari librerie e framework di web scraping che puoi leva.

Come sviluppatore Python, devi conoscere questi strumenti e imparare a usarli per scrivere codici migliori per le tue attività di web scraping.

In questo articolo imparerai a conoscere le librerie e i framework Python più popolari utilizzati per la creazione di web scraper. Imparerai anche come installare ciascuno di essi ed esempi di codice per darti un vantaggio.


Libreria di scraping Web Python

Le librerie di web scraping Python sono moduli e pacchetti scritti per eseguire attività specifiche nel flusso di lavoro di web scraping, che possono essere l’invio di richieste HTTP, la gestione di browser headless per il rendering di JavaScript e la simulazione dell’interazione uomo-web e l’analisi dei dati dalla pagina scaricata.


Urllib

urllib

Urllib è un pacchetto nelle librerie standard di Python con moduli per la gestione di URL e richieste HTTP. Viene fornito con 4 moduli, che includono

urllib.request

per la gestione delle richieste HTTP,

urllib.error

che contiene le eccezioni sollevate da

urllib.request
urllib.parse

per l’analisi degli URL e

urllib.robotparser

per analizzare il contenuto dei file robots.txt. Urllib non è facile da usare ma può aiutarti a gestire autenticazione, cookie, codifica URL e proxy, tra le altre cose. Dovresti usarlo solo quando hai bisogno di un controllo avanzato sulle tue richieste.

Come affermato in precedenza, il pacchetto Urllib è incluso nella libreria python standard e, come tale, non è necessario installarlo nuovamente. Basta importarlo nel tuo codice e usarlo.

Il codice seguente invierà una richiesta GET alla home page di Wikipedia e stamperà la risposta. La risposta sarà l’intero codice HTML della pagina.

import urllib.request as rq

get_content = rq.urlopen("https://en.wikipedia.org/wiki/Main_Page")

print(get_content.read().decode("utf-8"))

Richieste Python

Libreria HTTP per Python

Soprannominata Python HTTP for Humans, la libreria Python Requests è una libreria di terze parti introdotta per facilitare il processo di gestione delle richieste HTTP e degli URL. È costruito sopra Urllib e fornisce un’interfaccia facile da usare.

Oltre ad essere più facile da usare rispetto a urllib, ha anche una migliore documentazione. Quando si tratta di popolarità, si può dire che Requests è una delle librerie Python più popolari in quanto è il pacchetto Python più scaricato. Supporta l’internazionalizzazione, i cookie di sessione e l’autenticazione, oltre a pool di connessioni e timeout e caricamenti di file in più parti.

Python Requests è un pacchetto di terze parti e, come tale, è necessario installarlo prima di poterlo utilizzare. il modo consigliato per installarlo è usare il comando pip.

pip install requests
  • Python richiede un esempio di codice

Il codice seguente scaricherà la stessa pagina scaricata utilizzando Urllib in modo da poter confrontare anche se la differenza entra in gioco quando si utilizzano le loro funzionalità avanzate.

>> import requests

>>get_content = requests.get("https://en.wikipedia.org/wiki/Main_Page")

>> print(get_content.text)

Selenio

Il driver Web Selenium è uno strumento di automazione del browser: ciò per cui lo usi dipende interamente da te. È diventato popolare tra i web scraper in quanto può essere utilizzato per raschiare dati da siti Web ricchi di JavaScript. Gli strumenti tradizionali come la libreria Python Requests e Scrapy non sono in grado di eseguire il rendering di JavaScript e, pertanto, è necessario il selenio per questo.

Il selenio può essere utilizzato per automatizzare un buon numero di browser, inclusi Chrome e Firefox. Quando si esegue in modalità senza testa, in realtà non si vedrà un browser aperto, ma simuleranno le azioni negli ambienti del browser. Con Selenium, puoi simulare le azioni del mouse e della tastiera, visitare siti e raschiare i contenuti richiesti.

Esistono due requisiti necessari per poter automatizzare i browser utilizzando il driver Web Selenium. Questi includono l’associazione Selenium Python e un driver del browser. In questo articolo, utilizzeremo Chrome e, come tale, devi scaricare il driver di Chrome da qui: assicurati che sia per la versione di Chrome che stai utilizzando. Dopo l’installazione, decomprimilo e posiziona il file chromedriver.exe nella stessa directory con il tuo script python. Con questo, puoi quindi installare il selenium python binding usando il comando pip di seguito.

pip install requests

Di seguito è riportato un codice che mostra come cercare su Amazon utilizzando Selenium. Ricorda, lo script deve trovarsi nella stessa directory del file

chromedriver.exe

file.

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

 

driver = webdriver.Chrome()

driver.get("https://www.indeed.com/")

amazon_search = driver.find_element_by_id("twotabsearchtextbox")

amazon_search.send_keys("Web scraping for python developers")

amazon_search.send_keys(Keys.RETURN)

driver.close()

Con Python e Selenium, puoi trovare le posizioni aperte correnti e aggregare i dati degli sviluppatori Python da diverse piattaforme di lavoro proprio come questo sito Web, quindi puoi facilmente raschiare i dati degli sviluppatori Python da Indeed, Glassdoor, Flexjobs, Monster e così via.

Per saperne di più,


Zuppa Bella

BeautifulSoup è una libreria di analisi per l’analisi di file HTML e XML. Converte un documento di una pagina Web in un albero di analisi in modo che tu possa utilizzare i suoi modi pitoni per attraversarlo e manipolarlo. Con BeautiSoup, puoi analizzare tutti i dati richiesti purché siano disponibili nell’HTML. È importante che tu sappia che BeautifulSoup non ha un proprio parser, si trova sopra altri parser come lxml e persino html.parser disponibile nella libreria standard di Python. Quando si tratta di analizzare i dati dalle pagine web,

BeautifulSoup è la scelta più popolare. È interessante notare che è facile da imparare e padroneggiare. Quando analizzi una pagina web usando BeautifulSoup, non hai problemi anche quando l’HTML della pagina è disordinato e complesso.

  • Come installare BeautifulSoup

Proprio come ogni altra libreria discussa, puoi vedere pip per installarlo. Immettere il seguente comando nel prompt dei comandi.

pip install beautifulsoup4
  • Esempio di codice BeautifulSoup

Di seguito è riportato un codice che raccoglie e stampa l’elenco degli LGA in Nigeria sulla console. BeautifulSoup non ha la capacità di scaricare pagine Web e, come tale, utilizzeremo la libreria Python Requests per questo.

import requests

from bs4 import BeautifulSoup

 

url = "https://en.wikipedia.org/wiki/Local_government_areas_of_Nigeria"

page_content = requests.get(url).text

soup = BeautifulSoup(page_content, "html.parser")

table = soup.find("table", {"class": "wikitable"})

lga_trs = table.find_all("tr")(1:)

for i in lga_trs:

tds = i.find_all("td")

td1 = tds(0).find("a")

td2 = tds(1).find("a")

l_name = td1.contents(0)

l_url = td1("href")

l_state = td2("title")

l_state_url = td2("href")

print((l_name,l_url, l_state, l_state_url))

Per saperne di piùCome costruire un semplice web scraper in Python con Beautifulsoup


Lxml

Dal nome di questa libreria, puoi capire che ha qualcosa a che fare con XML. In realtà, è un parser, uno vero e non come BeautifulSoup che si trova sopra un parser per fungere da libreria di analisi. Oltre ai file XML, lxml può essere utilizzato anche per l’analisi dei file HTML. Potrebbe interessarti sapere che lxml è uno dei parser che BeautifulSoup usa per trasformare un documento di una pagina web in un albero da analizzare.

Lxml è molto veloce quando si tratta di analisi. Tuttavia, è difficile da imparare e padroneggiare. La maggior parte dei web scraper non lo usa da solo, ma lo usa come parser utilizzato da BeautifulSoup. Per questo motivo, non c’è davvero bisogno di un esempio di codice poiché non ci lavorerai da solo.

Lxml è disponibile nel repository Pypi e, come tale, puoi utilizzare il comando pip per installarlo. il comando per l’installazione di lxml è sotto.

pip install lxml

Framework di scraping Web Python

A differenza del caso delle librerie pensate per una sola funzione, i framework sono uno strumento completo che incorpora un buon numero di funzioni necessarie nello sviluppo di web scraper, che include la funzione per l’invio di richieste HTTP e le richieste di parsing.


Raschiante

Raschiante

Scrapy è il framework di scraping web più popolare e probabilmente il migliore pubblicamente disponibile come strumento open source. È stato creato ed è ancora ampiamente gestito da Scrapinghub.

Scrapy è un framework completo in quanto si occupa sia dell’invio delle richieste sia dell’analisi dei dati richiesti dalla pagina scaricata. Scrapy è multithread ed è il più veloce di tutti i framework e librerie Python. Semplifica lo sviluppo di web scraper complessi. Tuttavia, uno dei problemi ad esso associati è che non esegue il rendering e non esegue JavaScript e, come tale, è necessario utilizzare Selenium o Splash per questo. È anche importante sapere che ha una ripida curva di apprendimento.

Scrapy è disponibile su Pypi e, come tale, puoi installarlo usando il comando pip. Di seguito è riportato il comando da eseguire sul prompt dei comandi/terminale per scaricare e installare Scrapy.

pip install scrapy

Come affermato in precedenza, Scrapy è un framework completo e non ha una curva di apprendimento facile. Per un esempio di codice, è necessario scrivere molto codice e non funziona come nel caso di quelli descritti sopra. Per un esempio di codice di Scrapy, visita la pagina del tutorial ufficiale sul sito web di Scrapy.

Per saperne di più,


Pispider

Strumenti PySpider

Pyspider è un altro framework di web scraping scritto per i programmatori Python per sviluppare web scraper. Pyspider è un potente framework di web crawling che puoi utilizzare per creare web scraper per il web moderno.

A differenza del caso di Scrapy che non esegue il rendering di JavaScript da solo, Pyspider è bravo a farlo. Tuttavia, quando si tratta di affidabilità e maturità, Scrapy è molto più avanti di Pyspider. Consente un’architettura distribuita e fornisce supporto sia per Python 2 che per Python 3.

Supporta un buon numero di sistemi di database e viene fornito con una potente WebUI per monitorare le prestazioni del tuo crawler/scraper. Per funzionare, deve essere su un server.

Pyspider può essere installato utilizzando il comando pip di seguito.

pip install pyspider

Il codice seguente è il codice di esempio fornito da Pyspider nella sua pagina di documentazione. Raschia i collegamenti sulla home page di Scrapy.

from pyspider.libs.base_handler import *

 

class Handler(BaseHandler):

crawl_config = {}

@every(minutes=24 * 60)

def on_start(self):

self.crawl("https://scrapy.org/", callback=self.index_page)

 

@config(age=10 * 24 * 60 * 60)

def index_page(self, response):

for each in response.doc('a)(href^="http")').items():

self.crawl(each.attr.href, callback=self.detail_page)

 

def detail_page(self, response):

return {"url": response.url, "title": response.doc('title').text()

Come affermato in precedenza, Pyspider viene eseguito su un server. Il tuo computer è un server come server e ascolterà da localhost, quindi esegui

pyspider

comando e visita http://localhost:5000/


Imparentato,


Conclusion

Quando si tratta del numero di strumenti, librerie e framework disponibili per il web scraping nel linguaggio di programmazione Python, devi sapere che ce ne sono molti.

Tuttavia, non puoi andare a imparare ognuno di loro. Se stai sviluppando un semplice scraper che non richiede un’architettura complessa, l’utilizzo del duo di Requests e BeautifulSoup funzionerà, con l’aggiunta di Selenium se il sito è pesante con JavaScript.

Il selenio può anche essere usato da solo in tali aspetti. Tuttavia, quando non vedi l’ora di sviluppare un web scraper o crawler complesso, Scrapy è il framework da utilizzare.