Python per Web Scraping avanzato: bypassare i meccanismi anti-scraping con Scrapy e Selenium
Pubblicato: 2025-01-09Sommario
Python per Web Scraping avanzato: bypassare i meccanismi anti-scraping con Scrapy e Selenium
INTRODUZIONE
Il web scraping è quindi diventato un metodo essenziale di data mining. Tuttavia, è importante notare che i siti Web di oggi sono protetti da avanzati sistemi di conformità anti-scraping che impediscono tali processi. Questo post del blog approfondirà il modo in cui Python con Scrapy e Selenium aiuta gli sviluppatori a raccogliere dati, in particolare da siti Web altamente protetti. Esploriamo i metodi innovativi dei servizi di sviluppo web Pythonper superare i CAPTCHA, eludere il rilevamento e preservare un comportamento etico.
Scrapy vs. Selenio: un confronto dettagliato
Raschiante
Scrapy è un semplice framework di spidering su scala web Python. La sua forza è rappresentata al meglio nella sua capacità di gestire siti Web statici e di eseguire la scansione di una grande quantità di dati.
Punti di forza:
Velocità: a differenza di altri strumenti di scraping, Scrapy si basa su richieste asincrone, che aumentano la velocità di scraping.
Personalizzazione:dispone di pipeline per l'acquisizione e la pulizia dei dati.
Scalabilità: essenzialmente utile durante lo scraping, che coinvolge diversi siti Web che forniscono un grande volume di dati.
Funzionalità integrate: contiene metodi per gestire robots.txt, cookie e intestazioni.
- Selenio
Selenium è uno strumento creato per l'automazione del browser appositamente per siti Web dinamici e interattivi.
Punti di forza:
Gestione dinamica dei contenuti:quando si tratta di pagine ricche di JavaScript, Selenium offre le migliori prestazioni.
Interattività: consente agli utenti di utilizzare il mouse per fare clic, digitare sulla tastiera e scorrere sulla rotellina o sulla barra.
Risoluzione CAPTCHA: particolarmente adatto laddove vi sia la necessità di testare l'utilizzo del sistema da parte di un utente.
Debug visivo: durante il debug è possibile visualizzare la pagina renderizzata dal punto di vista degli sviluppatori.
Quando decidiamo tra l'utilizzo di Scrapy e Selenium, ci sono diversi fattori indicati di seguito che consideriamo nel prendere la decisione.
Siti Web statici: utilizza Scrapy per efficienza.
Siti Web dinamici: lo scraping di contenuti sviluppati da JavaScript viene eseguito meglio da Selenium.
Approccio ibrido:utilizza Scrapy per attività generali di web scraping e quindi utilizza Selenium per pagine Web specifiche che richiedono l'elaborazione di Javascript.
Tecniche avanzate per evitare il rilevamento
Qualcuno ha provato a utilizzare meccanismi anti-raschiamento per contrastare comportamenti insoliti? Di seguito sono riportate le tecniche avanzate per non essere rilevati:
Agenti utente a rotazione
I siti tengono traccia di tali agenti per rilevare bot e scraper. Gli user agent a rotazione imitano diversi dispositivi e browser.
Esempio di implementazione:
da fake_useragent importa UserAgent
intestazioni = {
'Agente utente': UserAgent().random
}
Gestione delle deleghe
Le porte mascherano il tuo indirizzo IP e ti assicurano di non incontrare divieti IP. La rotazione periodica dei proxy aiuta ad avere l'anonimato.
Provider proxy popolari:
Dati luminosi
ProxyMesh
Proxy intelligente
Utilizzo dei proxy in Scrapy:
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
'mioprogetto.middlewares.ProxyMiddleware': 100,
}
Richiedi limitazione
Raschiare ad una velocità elevata è sospetto ed è molto probabile che venga rilevato. Utilizza Scrapy AutoThrottle per creare ritardi tra le richieste.
Configurazione:
AUTOTHROTTLE_ENABLED = Vero
AUTOTHROTTLE_START_DELAY = 5
AUTOTHROTTLE_MAX_DELAY = 60
Randomizzazione delle intestazioni delle richieste
Molti campi come Referer, Accept-Language e Cookie possono nascondere le richieste tanto quanto un essere umano.
Esecuzione JavaScript
Utilizza i browser headless in Selenium per eseguire script Java e anche per catturare pagine non semplici/dinamiche.
Risoluzione CAPTCHA e navigazione senza testa con selenio
Uno dei maggiori problemi del web scraping viene catturato sotto il nome di CAPTCHA. Le funzionalità di automazione di Selenium consentono di risolvere CAPTCHA e di navigare senza testa.
Risoluzione dei CAPTCHA
Utilizzo di API di terze parti
Servizi come 2Captcha e Anti-Captcha possono automatizzare la risoluzione dei CAPTCHA.
Esempio di implementazione:
richieste di importazione
risposta = richieste.post('https://2captcha.com/in.php', dati={
'chiave': API_KEY,
'metodo': 'userrecaptcha',
'chiavegoogle': CAPTCHA_KEY,
'URL pagina': PAGE_URL
})
Approcci di apprendimento automatico
Nei CAPTCHA difficili è possibile identificare testo o modelli utilizzando modelli di apprendimento dell'intelligenza artificiale. A questo scopo possono essere utilizzati programmi come TensorFlow e OpenCV.
Navigazione senza testa
I browser headless funzionano senza interfaccia grafica, il che significa che lo scraping è più veloce e non è facilmente riconoscibile.
Esempio con selenio:
dal webdriver di importazione del selenio
opzioni = webdriver.ChromeOptions()
opzioni.add_argument('–headless')
driver = webdriver.Chrome(opzioni=opzioni)
driver.get('https://esempio.com')
Scraping di contenuti dinamici: casi d'uso ed esempi
Siti di commercio elettronico
La sfida:categorie di prodotti dinamiche e blocchi più piccoli di prodotti divisi in pagine.
Soluzione:mentre Scrapy per la scansione e il recupero di più pagine Web per gli stessi prodotti, Selenium per il rendering dei dettagli del prodotto.
Siti web di notizie
Sfida: articoli che vengono caricati con l'aiuto di AJAX sulla pagina dopo il caricamento iniziale.
Soluzione: in Selenium esiste un modo per caricare altri articoli che vengono visualizzati mentre l'utente scorre la pagina.
Dati sui social media
Sfidae: Scorrimento infinito e utilizzo di elementi interattivi sul sito web.
Soluzione: per scansionare la pagina e ottenere dati, l'execute_script di selenium è utile.
Esempio:
SCROLL_PAUSE_TIME = 2
mentre Vero:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
tempo.sonno(SCROLL_PAUSE_TIME)
Considerazioni etiche e linee guida legali
Rispetta Robots.txt
Per prima cosa, vai al sito web che intendi eseguire lo scraping e conduci una ricerca preventiva per determinare le politiche di scraping indicate online nel file robots.txt.
Evitare carichi eccessivi
Lo scraping può essere eseguito molto frequentemente o con intensità molto elevata e questo non va bene per il server della pagina web. Per evitare un impatto significativo, limitare o inserire ritardi nel processo di gestione del rischio.
Politiche di utilizzo dei dati
I dati di web scraping dovrebbero essere allineati al GDPR, al CCPA e ad altre leggi e atti sulla protezione dei dati.
Attribuzione
In caso di utilizzo dei dati raschiati per la pubblicazione è necessario annotare la fonte per evitare violazioni delle leggi sul copyright.
Richiedi il permesso
Quando possibile, richiedere il permesso scritto per scaricare informazioni dal sito web.
Domande frequenti
- È possibile usare Scrapy e Selenium insieme?
Sì, sarà efficiente utilizzare Scrapy per la scansione e poi Selenium per la gestione dei contenuti dinamici.
- In che modo i proxy aiutano nel web scraping?
Nascondono il tuo indirizzo IP per evitare di essere bannato e anche per aprirsi a siti con restrizioni.
- Cos'è la navigazione headless?
La navigazione senza testa consente inoltre di raschiare un sito Web senza richiedere un'interfaccia utente grafica, quindi impiegando meno tempo e non si nota.
- Esiste qualche rischio dal punto di vista legale per il web scraping?
Ebbene sì, lo scraping dei dati può anche violare le leggi sulla privacy dei dati o i termini di servizio del sito.
- Cos'è meglio per la raschiatura su larga scala: Scrapy o Selenium?
Lo scraping tramite Scrapy è più veloce e può essere espanso rapidamente, il che lo rende adatto allo scraping su larga scala rispetto a Selenium, che è adatto per le pagine dinamiche.
Conclusione
In realtà, il web scraping dei siti Web moderni richiede strumenti e tecniche Pythonefficaci . Scrapy e Selenium sono due potenti strumenti di scraping che coprono sia lo scraping web HTML statico che quello dinamico. Lo sviluppo di nuovi user agent, server proxy e risoluzione di captcha rientrano tra le pratiche efficaci per evitare tali meccanismi. Tuttavia, i fattori etici devono essere sempre presi in considerazione quando si utilizza l'approccio del web scraping con usi vietati e illegali.