Raschiatore Web Python avanzato
Costruisci uno scraper web avanzato in Python. Impara a estrarre i dati della pagina, a gestire i blocchi dello user-agent, a gestire i limiti di velocità e a strutturare gli output.
Panoramica
Il web scraping implica il recupero delle pagine web in modo programmatico e l'analisi della loro struttura HTML per estrarre dati specifici. In Python, questo viene tradizionalmente realizzato utilizzando "requests" e "BeautifulSoup".
I raschiatori avanzati richiedono una configurazione robusta. La semplice richiesta di pagine può comportare blocchi o ban IP, richiedendo la personalizzazione delle intestazioni come user-agent personalizzati e l'introduzione di intervalli di ritardo casuali.
Questo esempio interattivo imita lo scraping di dati fittizi con la convalida. Dimostra come individuare contenitori nidificati, gestire i timeout di rete e strutturare i dati di output in elenchi puliti.
Codice e output di esecuzione
Una routine di web scraping con intestazioni personalizzate, gestione del timeout e strutture parser HTML.
import requests
from bs4 import BeautifulSoup
import time
def scrape_quotes():
# Mock URL designed for scraping practice
url = "https://quotes.toscrape.com/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
print(f"Initiating request to: {url}...")
try:
# Request with timeout protection
response = requests.get(url, headers=headers, timeout=5)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
quotes = soup.find_all("div", class_="quote", limit=3)
results = []
for q in quotes:
text = q.find("span", class_="text").text
author = q.find("small", class_="author").text
tags = [t.text for t in q.find_all("a", class_="tag")]
results.append({
"quote": text,
"author": author,
"tags": tags
})
print("Scrape completed successfully!\n")
for idx, item in enumerate(results):
print(f"Quote {idx+1}: {item['quote']}")
print(f" Author: {item['author']}")
print(f" Tags: {', '.join(item['tags'])}\n")
except requests.exceptions.RequestException as e:
print(f"Network error occurred: {e}")
scrape_quotes()Initiating request to: https://quotes.toscrape.com/...
Scrape completed successfully!
Quote 1: “The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”
Author: Albert Einstein
Tags: change, deep-thoughts, thinking
Quote 2: “It is our choices, Harry, that show what we truly are, far more than our abilities.”
Author: J.K. Rowling
Tags: abilities, choices
Quote 3: “There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”
Author: Albert Einstein
Tags: inspirational, life, live, miracleImplementazione passo dopo passo
- Monitoraggio e monitoraggio dei prezzi nei cataloghi degli acquisti
- Analisi del sentiment raccogliendo dati sulle recensioni dai forum
- Creazione di set di dati di ricerca accademica
Domande frequenti
Cos'è il file robots.txt?
Un file di testo posizionato alla radice di un dominio che indica quali percorsi di ricerca ai robot e ai crawler possono o non è consentita la scansione. Dovresti sempre leggerlo prima di scrivere un raschietto.
Come posso raschiare le pagine rese dinamicamente tramite JavaScript?
Le richieste standard recuperano solo HTML statico. Per analizzare pagine ricche di Javascript, è necessario utilizzare strumenti di automazione del browser come Playwright o Selenium.