Il web scraping è una tecnica potente per estrarre dati dai siti web, ma deve essere eseguita in modo responsabile. Un elemento cruciale del web scraping è la comprensione e il rispetto del file robots.txt. Questo articolo fornisce un'analisi approfondita del file robots.txt, del suo ruolo nel web scraping e delle migliori pratiche da seguire.
Che cos'è il robots.txt?
Il file robots.txt è uno standard utilizzato dai siti web per comunicare con i crawler e i bot. Specifica quali parti del sito possono o non possono essere accessibili ai sistemi automatici. Sebbene sia stato progettato principalmente per i motori di ricerca, il file robots.txt influisce anche sulle pratiche di scraping del Web.
Scopo
L'obiettivo principale di robots.txt è quello di indicare ai web crawler (come quelli dei motori di ricerca) quali pagine o sezioni di un sito web sono autorizzati a scorrere o indicizzare. Questo può aiutare a evitare che determinati contenuti appaiano nei risultati dei motori di ricerca, a gestire il carico del server e a controllare l'accessibilità di informazioni private o sensibili. Gli amministratori del sito possono controllare e gestire le attività dei web crawler, evitando sovraccarichi e proteggendo i dati sensibili.
Posizione
Il file robots.txt deve essere collocato nella directory principale del sito web. Ad esempio, deve essere accessibile tramite http://www.example.com/robots.txt.
Formato
Il file è composto da semplice testo e segue una struttura di base. Include direttive che specificano quali agenti utente (bot) devono seguire quali regole.
Direttive comuni:
-
Agente utente
Definisce a quale web crawler si applicano le seguenti regole.
Ad esempio: User-agent: *
L'asterisco (*) è un carattere jolly che si applica a tutti i bot. -
Disconoscimento
Specifica i percorsi o le pagine a cui un crawler non deve accedere.
Ad esempio: Disallow: /privato/
Questo indica ai bot di non effettuare il crawling di qualsiasi URL che inizi con /private/. -
Consentire
Sovrascrive una direttiva Disallow per percorsi specifici.
Ad esempio: Consenti: /privato/pagina-pubblica.html
Questo permette ai crawler di accedere a public-page.html anche se /private/ è disabilitato. -
Ritardo di strisciamento
Imposta un ritardo tra le richieste per gestire il carico sul server.
Ad esempio: Ritardo di strisciamento: 10 -
Mappa del sito
Indica la posizione della sitemap XML per aiutare i crawler a trovare e indicizzare le pagine in modo più efficiente.
Ad esempio: Mappa del sito: http://www.example.com/sitemap.xml
Esempio di file robots.txt
User-agent: * Disallow: /privato/ Consenti: /privato/pagina-pubblica.html Ritardo di crawl: 12 Mappa del sito: http://www.example.com/sitemap.xml
Ulteriori considerazioni
- Alcuni motori di ricerca hanno un limite di dimensione per i file
robots.txt
file, di solito 500KB. Assicuratevi che il file non superi questo limite. - Il
robots.txt
deve utilizzare la codifica UTF-8. L'uso di altre codifiche può impedire il corretto parsing. - Alcuni crawler (come Googlebot) supportano l'uso di caratteri jolly in
Disconoscimento
eConsentire
(ad es,*
per qualsiasi carattere,$
per la fine di una stringa).Disallow: /privato/* Disallow: /temp/$
- Il
robots.txt
è sensibile alle maiuscole e alle minuscole. Ad esempio,/Admin/
e/admin/
sono percorsi diversi. - Le persone possono utilizzare il
#
per aggiungere commenti nel file, che vengono ignorati dai crawler ma possono aiutare gli amministratori a comprendere e mantenere il file.# Impedire a tutti i crawler di accedere alle pagine di amministrazione User-agent: * Disallow: /admin/
- Prima di applicare il
robots.txt
in un ambiente di produzione, utilizzare strumenti (come il robots.txt Tester di Google Search Console) per testare le regole e assicurarsi che funzionino come previsto. - Per i siti web di grandi dimensioni o con contenuti dinamici, potrebbe essere necessario generare dinamicamente il file
robots.txt
file. Assicurarsi che il file generato sia sempre valido e includa tutte le regole necessarie. - Non tutti i crawler obbediscono al
robots.txt
quindi potrebbero essere necessarie misure aggiuntive (come firewall del server, blacklist IP, ecc.) per proteggere i contenuti sensibili dai crawler maligni. - Se si vuole impedire ai motori di ricerca di indicizzare pagine specifiche, ma consentire ai crawler di accedervi per recuperare altri contenuti, utilizzare l'opzione
noindex
meta tag invece diDisconoscimento
..
- Cercate di mantenere il
robots.txt
file semplici ed evitare regole troppo complesse. Le regole complesse possono essere difficili da mantenere e possono portare a potenziali errori di parsing.
Come robots.txt influisce sullo scraping del web
-
Linee guida per i crawler
La funzione principale di robots.txt è quella di fornire istruzioni ai web crawler su quali parti del sito non devono essere accessibili. Ad esempio, se un file o una directory sono vietati in robots.txt, i crawler dovranno evitare queste aree.
-
Rispetto di robots.txt
- Scraping etico: Molti web scrapers e crawler etici si attengono alle regole specificate in robots.txt per cortesia verso i proprietari dei siti e per evitare di sovraccaricare il server.
- Considerazioni legali: Anche se non è legalmente vincolante, ignorare il robots.txt può talvolta portare a problemi legali, soprattutto se lo scraping causa danni o violazioni dei termini di servizio.
-
Percorsi non consentiti e percorsi consentiti
- Percorsi non consentiti: Questi vengono specificati utilizzando la direttiva Disallow. Ad esempio,
Disallow: /dati privati/
significa che tutti i crawler devono evitare la directory /private-data/. - Percorsi consentiti: Se alcune directory o pagine sono consentite, possono essere specificate utilizzando la direttiva Allow.
- Percorsi non consentiti: Questi vengono specificati utilizzando la direttiva Disallow. Ad esempio,
-
Regole specifiche per l'agente utente
Il file robots.txt può specificare regole per diversi crawler utilizzando la direttiva User-agent.
Ad esempio:
User-agent: Googlebot
Disallow: /no-google/Questo blocca l'accesso di Googlebot a /no-google/, ma consente ad altri crawler di accedere.
-
Carico del server
Seguendo le linee guida di robots.txt, gli scrapers riducono il rischio di sovraccaricare un server, cosa che può accadere se vengono effettuate troppe richieste troppo velocemente.
-
Non è un meccanismo di sicurezza
Il file robots.txt non è una funzione di sicurezza. È una linea guida, non una restrizione. Si basa sul fatto che i crawler rispettino le regole stabilite. Gli scraper malintenzionati o quelli programmati per ignorare robots.txt possono comunque accedere alle aree non consentite.
-
Conformità e migliori pratiche
- Rispettare robots.txt: Per evitare potenziali conflitti e rispettare i gestori dei siti web, gli scrapers devono attenersi alle regole definite in robots.txt.
- Considerare lo stato di robots.txt: Controllare sempre il file robots.txt prima di effettuare lo scraping di un sito per garantire la conformità con le politiche del sito stesso.
Idee sbagliate comuni su robots.txt
-
robots.txt è legalmente vincolante
robots.txt non è un contratto legale, ma un protocollo per gestire l'accesso dei crawler. Pur essendo fondamentale per lo scraping etico, non impone legalmente restrizioni di accesso.
-
robots.txt impedisce tutto lo scraping
robots.txt è una linea guida per i bot e i crawler, ma non impedisce tutte le forme di scraping. Lo scraping manuale o gli strumenti più sofisticati possono ancora accedere alle aree riservate.
-
robots.txt protegge i dati sensibili
robots.txt non è una funzione di sicurezza. È destinato a gestire l'accesso dei crawler piuttosto che a proteggere le informazioni sensibili.
Come raschiare le pagine da un sito web con robots.txt

1. Preparazione allo scraping
Impostazione dell'ambiente
Installare il necessario Pitone biblioteche:
importare le richieste da bs4 importa BeautifulSoup importare tempo
Scegliere gli strumenti giusti
- Richieste: Per effettuare richieste HTTP.
- BeautifulSoup: Per l'analisi di HTML e XML.
- Scrapy: Un framework completo per lo scraping del web.
- Selenio: Per interagire con i contenuti caricati dinamicamente.
Valutare i termini di servizio del sito web
Esaminate i termini di servizio del sito web per assicurarvi che le vostre azioni siano conformi alle loro politiche. Alcuni siti web vietano esplicitamente lo scraping.
2. Raschiare con cautela
Recupero e analisi di robots.txt
Per prima cosa, controllate il file robots.txt per capire le regole di crawling del sito:
response = requests.get('https://example.com/robots.txt') robots_txt = response.text def parse_robots_txt(robots_txt): regole = {} user_agent = '*' for line in robots_txt.split('\n'): se line.startswith('User-agent'): user_agent = line.split(':')[1].strip() elif line.startswith('Disallow'): path = line.split(':')[1].strip() rules[user_agent] = rules.get(user_agent, []) + [path] restituire le regole regole = parse_robots_txt(robots_txt)
Identificazione dei percorsi consentiti e non consentiti
Determinate quali sono i percorsi a cui potete accedere legalmente ed eticamente in base alle direttive di robots.txt:
allowed_paths = [path for path in rules.get('*', []) if not path.startswith('/')]
Gestire in modo etico i percorsi non consentiti
Se avete bisogno di dati provenienti da percorsi non consentiti o volete effettuare lo scraping di siti web protetti da robots.txt, considerate le seguenti opzioni:
- Contattare il proprietario del sito web: Richiedere l'autorizzazione ad accedere ai dati.
- Utilizzare metodi alternativi: Esplorare le API o le fonti di dati pubbliche.
3. Metodi alternativi di accesso ai dati
Le API e i loro vantaggi
Molti siti web offrono API che forniscono un accesso strutturato ai loro dati. L'utilizzo delle API è spesso più affidabile e rispettoso dello scraping.
Fonti di dati pubblici
Cercate i dati disponibili pubblicamente che potrebbero soddisfare le vostre esigenze. I siti web governativi, gli istituti di ricerca e le piattaforme di dati aperti sono ottimi punti di partenza.
Accordi di condivisione dei dati
Contattate il proprietario del sito web per negoziare accordi di condivisione dei dati. In questo modo è possibile accedere ai dati rispettando le politiche del sito.
4. Tecniche avanzate
Scraping di contenuti caricati dinamicamente
Utilizzate Selenium o strumenti simili per effettuare lo scraping dei contenuti caricati dinamicamente da JavaScript:
da selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') html = driver.page_source soup = BeautifulSoup(html, 'html.parser')
Utilizzo di browser headless
I browser senza testa, come Headless Chrome o PhantomJS, possono interagire con le pagine web senza visualizzare un'interfaccia utente, il che li rende utili per lo scraping di contenuti dinamici.
Evitare i limiti di velocità di rilevamento e manipolazione
Ruotare gli user agent, utilizzare i proxy e implementare ritardi tra le richieste per imitare il comportamento umano ed evitare di essere bloccati.
OkeyProxy è un potente provider di proxy, che supporta rotazione automatica degli IP residenziali con alta qualità. Con gli ISP che offrono oltre 150 milioni di IP in tutto il mondo, è possibile registrarsi e ricevere una prova gratuita di 1 GB!

Conclusione
Seguendo questa guida, potrete districarvi tra le complessità dello scraping di pagine di siti web con robots.txt, rispettando al contempo gli standard etici e legali. Il rispetto di robots.txt non solo vi aiuta a evitare potenziali problemi legali, ma garantisce anche un rapporto di collaborazione con i proprietari dei siti web. Buon scraping!