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.

Prova nell'editor

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.

adv_scraper.py
Prova nell'editor
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()
Uscita terminale
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, miracle

Implementazione 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.

Argomenti correlati