logo

Tutorial sul web scraping Python

Il web scraping, il processo di estrazione dei dati dai siti web, è emerso come una potente tecnica per raccogliere informazioni dalla vasta distesa di Internet. In questo tutorial, esploreremo varie librerie e moduli Python comunemente utilizzati per il web scraping e approfondiremo il motivo per cui Python 3 è la scelta preferita per questa attività.

Pacchetti e strumenti essenziali per il web scraping Python

L'ultima versione di Pitone , offre un ricco set di strumenti e librerie appositamente progettati per il web scraping, rendendo più semplice che mai il recupero dei dati dal web in modo efficiente ed efficace.



Tabella dei contenuti

Modulo Richieste

La libreria delle richieste viene utilizzata per effettuare richieste HTTP a un URL specifico e restituisce la risposta. Le richieste Python forniscono funzionalità integrate per la gestione sia della richiesta che della risposta.

pip install requests>

Esempio: effettuare una richiesta

Il modulo delle richieste Python ha diversi metodi integrati per effettuare richieste HTTP all'URI specificato utilizzando richieste GET, POST, PUT, PATCH o HEAD. Una richiesta HTTP ha lo scopo di recuperare dati da un URI specificato o di inviare dati a un server. Funziona come un protocollo di richiesta-risposta tra un client e un server. Qui utilizzeremo la richiesta GET. IL Metodo OTTIENI viene utilizzato per recuperare informazioni da un determinato server utilizzando un determinato URI. Il metodo GET invia le informazioni utente codificate aggiunte alla richiesta di pagina.



Pitone
import requests # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # print content of request print(r.content)>

Produzione

Richieste Python che effettuano richieste GET

fcfs

Per maggiori informazioni consultare la ns Tutorial sulle richieste Python .



Libreria BeautifulSoup

Beautiful Soup fornisce alcuni semplici metodi e frasi Pythonic per guidare, cercare e modificare un albero di analisi: un kit di strumenti per studiare un documento e rimuovere ciò di cui hai bisogno. Non è necessario molto codice per documentare un'applicazione.

Beautiful Soup converte automaticamente i record in entrata in Unicode e i moduli in uscita in UTF-8. Non devi pensare alle codifiche a meno che il documento non definisca una codifica e Beautiful Soup non riesce a catturarne una. Quindi devi solo scegliere la codifica originale. Beautiful Soup si basa sui famosi parser Python come LXML e HTML, permettendoti di provare diverse strategie di analisi o scambiare la velocità con la flessibilità.

pip install beautifulsoup4>

Esempio

  1. Importazione di librerie: Il codice importa la libreria delle richieste per effettuare richieste HTTP e la classe BeautifulSoup dalla libreria bs4 per l'analisi dell'HTML.
  2. Effettuare una richiesta GET: Invia una richiesta GET a 'https://www.techcodeview.com
  3. Verifica del codice di stato: Stampa il codice di stato della risposta, in genere 200 per successo.
  4. Analisi dell'HTML : il contenuto HTML della risposta viene analizzato utilizzando BeautifulSoup e archiviato nella variabile soup.
  5. Stampa dell'HTML abbellito: Stampa la versione abbellita del contenuto HTML analizzato per leggibilità e analisi.
Pitone
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') print(soup.prettify())>

Produzione

Python BeautifulSoup Analisi HTML

Ricerca di elementi per classe

Ora vorremmo estrarre alcuni dati utili dal contenuto HTML. L'oggetto soup contiene tutti i dati nella struttura annidata che potrebbero essere estratti a livello di codice. Il sito web che vogliamo raschiare contiene molto testo, quindi ora racimolamo tutti quei contenuti. Per prima cosa, ispezioniamo la pagina web che vogliamo raschiare.


Nell'immagine sopra, possiamo vedere che tutto il contenuto della pagina è sotto il div con la voce content-class. Utilizzeremo la classe find. Questa classe troverà il tag specificato con l'attributo specificato. Nel nostro caso, troverà tutti i div aventi classe come contenuto della voce.

Possiamo vedere che il contenuto della pagina è sotto il file

etichetta. Ora dobbiamo trovare tutti i tag p presenti in questa classe. Possiamo usare iltrova tutto classe di BeautifulSoup.

Pitone
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') s = soup.find('div', class_='entry-content') content = s.find_all('p') print(content)>

Produzione:

trova_tutto bs4

Per maggiori informazioni consultare la ns Python BeautifulSoup .

Selenio

Selenium è un popolare modulo Python utilizzato per automatizzare i browser web. Consente agli sviluppatori di controllare i browser Web in modo programmatico, abilitando attività come web scraping, test automatizzati e interazione con le applicazioni web. Selenium supporta vari browser Web, tra cui Chrome, Firefox, Safari ed Edge, rendendolo uno strumento versatile per l'automazione del browser.

Esempio 1: Per Firefox

In questo esempio specifico, stiamo indirizzando il browser alla pagina di ricerca di Google con il parametro di query geeksforgeeks. Il browser caricherà questa pagina e potremo quindi procedere a interagire con essa a livello di codice utilizzando Selenium. Questa interazione potrebbe comportare attività come l'estrazione dei risultati di ricerca, il clic sui collegamenti o l'estrazione di contenuti specifici dalla pagina.

Pitone
# import webdriver  from selenium import webdriver # create webdriver object  driver = webdriver.Firefox() # get google.co.in  driver.get('https://google.co.in / search?q = geeksforgeeks')>

Produzione

per-Firefox

Esempio 2: per Chrome

  1. Importiamo il modulo webdriver dalla libreria Selenium.
  2. Specifichiamo il percorso dell'eseguibile del driver web. È necessario scaricare il driver appropriato per il browser e fornire il percorso per accedervi. In questo esempio, stiamo utilizzando il driver Chrome.
  3. Creiamo una nuova istanza del browser Web utilizzando webdriver.Chrome() e passiamo il percorso dell'eseguibile del driver Chrome come argomento.
  4. Navighiamo verso una pagina web chiamando il metodo get() sull'oggetto browser e passando l'URL della pagina web.
  5. Estraiamo informazioni dalla pagina Web utilizzando vari metodi forniti da Selenium. In questo esempio, recuperiamo il titolo della pagina utilizzando l'attributo title dell'oggetto browser.
  6. Infine chiudiamo il browser utilizzando il metodo quit().
Pitone
# importing necessary packages from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager # for holding the resultant list element_list = [] for page in range(1, 3, 1): page_url = 'https://webscraper.io/test-sites/e-commerce/static/computers/laptops?page=' + str(page) driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(page_url) title = driver.find_elements(By.CLASS_NAME, 'title') price = driver.find_elements(By.CLASS_NAME, 'price') description = driver.find_elements(By.CLASS_NAME, 'description') rating = driver.find_elements(By.CLASS_NAME, 'ratings') for i in range(len(title)): element_list.append([title[i].text, price[i].text, description[i].text, rating[i].text]) print(element_list) #closing the driver driver.close()>

Produzione

differenza tra un gigabyte e un megabyte

Per maggiori informazioni consultare la ns Selenio pitone .

Lxml

Il modulo lxml in Python è una potente libreria per l'elaborazione di documenti XML e HTML. Fornisce funzionalità di analisi XML e HTML ad alte prestazioni insieme a un'API semplice e python. lxml è ampiamente utilizzato nello scraping web Python grazie alla sua velocità, flessibilità e facilità d'uso.

pip install lxml>

Esempio

Ecco un semplice esempio che mostra come utilizzare il modulo lxml per il web scraping Python:

  1. Importiamo il modulo html da lxml insieme al modulo request per l'invio di richieste HTTP.
  2. Definiamo l'URL del sito web che vogliamo raschiare.
  3. Inviamo una richiesta HTTP GET al sito Web utilizzando la funzione request.get() e recuperiamo il contenuto HTML della pagina.
  4. Analizziamo il contenuto HTML utilizzando la funzione html.fromstring() di lxml, che restituisce un albero di elementi HTML.
  5. Utilizziamo espressioni XPath per estrarre elementi specifici dall'albero HTML. In questo caso, stiamo estraendo il contenuto testuale di tutti i file (ancoraggio) elementi della pagina.
  6. Iteriamo sui titoli dei collegamenti estratti e li stampiamo.
Pitone
from lxml import html import requests # Define the URL of the website to scrape url = 'https://example.com' # Send an HTTP request to the website and retrieve the HTML content response = requests.get(url) # Parse the HTML content using lxml tree = html.fromstring(response.content) # Extract specific elements from the HTML tree using XPath # For example, let's extract the titles of all the links on the page link_titles = tree.xpath('//a/text()') # Print the extracted link titles for title in link_titles: print(title)>

Produzione

More information...>

Modulo URLlib

Il modulo urllib in Python è una libreria integrata che fornisce funzioni per lavorare con gli URL. Ti consente di interagire con le pagine web recuperando URL (Uniform Resource Locator), aprendo e leggendo i dati da essi ed eseguendo altre attività relative agli URL come la codifica e l'analisi. Urllib è un pacchetto che raccoglie diversi moduli per lavorare con gli URL, come:

livecricket.is
  • urllib.request per l'apertura e la lettura.
  • urllib.parse per l'analisi degli URL
  • urllib.error per le eccezioni sollevate
  • urllib.robotparser per analizzare i file robot.txt

Se urllib non è presente nel tuo ambiente, esegui il codice seguente per installarlo.

pip install urllib3>

Esempio

Ecco un semplice esempio che mostra come utilizzare il modulo urllib per recuperare il contenuto di una pagina web:

  1. Definiamo l'URL della pagina web che vogliamo recuperare.
  2. Usiamo la funzione urllib.request.urlopen() per aprire l'URL e ottenere un oggetto di risposta.
  3. Leggiamo il contenuto dell'oggetto risposta utilizzando il metodo read().
  4. Poiché il contenuto viene restituito come byte, lo decodifichiamo in una stringa utilizzando il metodo decode() con codifica 'utf-8'.
  5. Infine, stampiamo il contenuto HTML della pagina web.
Pitone
import urllib.request # URL of the web page to fetch url = 'https://www.example.com' try: # Open the URL and read its content response = urllib.request.urlopen(url) # Read the content of the response data = response.read() # Decode the data (if it's in bytes) to a string html_content = data.decode('utf-8') # Print the HTML content of the web page print(html_content) except Exception as e: print('Error fetching URL:', e)>

Produzione

uhm

PyautoGUI

Il modulo pyautogui in Python è una libreria di automazione GUI multipiattaforma che consente agli sviluppatori di controllare il mouse e la tastiera per automatizzare le attività. Sebbene non sia progettato specificamente per il web scraping, può essere utilizzato insieme ad altre librerie di web scraping come Selenium per interagire con pagine web che richiedono l'input dell'utente o simulare azioni umane.

pip3 install pyautogui>

Esempio

In questo esempio, pyautogui viene utilizzato per eseguire lo scorrimento e acquisire uno screenshot della pagina dei risultati di ricerca ottenuta digitando una query nel campo di input di ricerca e facendo clic sul pulsante di ricerca utilizzando Selenium.

Pitone
import pyautogui # moves to (519,1060) in 1 sec pyautogui.moveTo(519, 1060, duration = 1) # simulates a click at the present  # mouse position  pyautogui.click() # moves to (1717,352) in 1 sec pyautogui.moveTo(1717, 352, duration = 1) # simulates a click at the present  # mouse position pyautogui.click()>

Produzione

Programma

Il modulo di pianificazione in Python è una semplice libreria che consente di pianificare l'esecuzione delle funzioni Python a intervalli specificati. È particolarmente utile nel web scraping in Python quando è necessario acquisire regolarmente dati da un sito Web a intervalli predefiniti, ad esempio orari, giornalieri o settimanali.

Esempio

  • Importiamo i moduli necessari: pianificazione, orario, richieste e BeautifulSoup dal pacchetto bs4.
  • Definiamo una funzione scrape_data() che esegue l'attività di web scraping. All'interno di questa funzione, inviamo una richiesta GET a un sito Web (sostituisci 'https://example.com' con l'URL del sito Web che desideri recuperare), analizziamo il contenuto HTML utilizzando BeautifulSoup, estraiamo i dati desiderati e lo stampiamo .
  • Pianifichiamo l'esecuzione della funzione scrape_data() ogni ora utilizzando schedule.every().hour.do(scrape_data).
  • Entriamo in un ciclo principale che controlla continuamente le attività pianificate in sospeso utilizzando schedule.run_pending() e dorme per 1 secondo tra le iterazioni per evitare che il ciclo consumi troppa CPU.
Pitone
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)>

Produzione

Perché Python3 per il Web Scraping?

La popolarità di Python per il web scraping deriva da diversi fattori:

  1. Facilità d'uso : la sintassi pulita e leggibile di Python semplifica la comprensione e la scrittura del codice, anche per i principianti. Questa semplicità accelera il processo di sviluppo e riduce la curva di apprendimento per le attività di web scraping.
  2. Ecosistema ricco : Python vanta un vasto ecosistema di librerie e framework su misura per il web scraping. Librerie come BeautifulSoup, Scrapy e Requests semplificano il processo di analisi dell'HTML, rendendo l'estrazione dei dati un gioco da ragazzi.
  3. Versatilità : Python è un linguaggio versatile che può essere utilizzato per un'ampia gamma di attività oltre al web scraping. La sua flessibilità consente agli sviluppatori di integrare perfettamente il web scraping in progetti più ampi, come analisi dei dati, apprendimento automatico o sviluppo web.
  4. Supporto comunitario : Python ha una vasta e attiva comunità di sviluppatori che contribuiscono alle sue librerie e forniscono supporto attraverso forum, tutorial e documentazione. Questa ricchezza di risorse garantisce che gli sviluppatori abbiano accesso ad assistenza e guida quando affrontano le sfide del web scraping.