Naviguer dans le labyrinthe : flux de travail proxy gratuits pour le scraping de contenu dynamique
Comprendre le scraping de contenu dynamique
Le contenu dynamique, cette force changeante qui anime les pages web modernes, échappe à la compréhension des requêtes HTTP naïves. Restitué par JavaScript, il exige plus que de simples requêtes GET ; il requiert une orchestration : des requêtes se faisant passer pour des navigateurs légitimes, des proxys contournant les interdictions d'adresses IP et du code qui lit entre les lignes.
Le rôle des proxys dans le scraping dynamique
Les proxys sont les masques de notre mascarade numérique, essentiels pour :
- Contourner les limites de débit basées sur IP
- Contourner les restrictions géographiques
- Répartir le trafic pour éviter la détection
Mais comment obtenir cet anonymat sans puiser dans les coffres ? Les proxies gratuits – éphémères, indisciplinés et pourtant indispensables. Analysons leur utilisation avec une précision chirurgicale.
Workflow 1 : Rotation des proxys publics gratuits avec Requests et BeautifulSoup
Ingrédients
- Listes de proxy gratuites
demandes
,BelleSoup
en Python
Mesures
- Procurations de récolte
Extraire une liste de proxys gratuits, par exemple, à partir de liste-de-proxy-gratuite.net.
« python
demandes d'importation
à partir de bs4 importer BeautifulSoup
def get_proxies():
url = 'https://free-proxy-list.net/'
soupe = BeautifulSoup(requests.get(url).content, 'html.parser')
proxys = set()
pour la ligne dans soup.find('table', id='proxylisttable').tbody.find_all('tr'):
si row.find_all('td')[6].text == 'yes' : proxys HTTPS # uniquement
ip = row.find_all('td')[0].text
port = row.find_all('td')[1].text
proxies.add(f'{ip}:{port}')
liste de retour (proxies)
“`
- Faire tourner les proxys pour les requêtes
« python
importer aléatoirement
proxys = get_proxies()
def fetch_with_proxy(url) :
proxy = random.choice(proxies)
essayer:
resp = requests.get(url, proxies={“http”: f”http://{proxy}”, “https”: f”http://{proxy}”}, timeout=5)
si resp.status_code == 200 :
retour resp.texte
sauf Exception :
passer
retour Aucun
“`
- Gérer le contenu dynamique
Pour les pages avec un JS minimal, inspectez le trafic réseau pour trouver les points de terminaison XHR et récupérer les données directement.
Avantages et inconvénients
Fonctionnalité | Avantages | Inconvénients |
---|---|---|
Installation | Rapide, facile | Les proxys sont souvent peu fiables |
Anonymat | La rotation des adresses IP réduit les interdictions | Proxies morts/lents fréquents |
Contenu dynamique | Fonctionne uniquement pour les sites simples rendus en JS | Les sites JS complets nécessitent un émulateur de navigateur |
Workflow 2 : Scraping avec Selenium et rotation de proxy gratuite
Ingrédients
- Proxys SSL
- Sélénium avec un pilote de navigateur
Mesures
- Récupérer une liste de proxy
Logique similaire à celle ci-dessus, mais ciblant sslproxies.org.
- Configurer Selenium pour utiliser un proxy
« python
depuis le sélénium importer le pilote Web
depuis selenium.webdriver.chrome.options importer des options
définition get_chrome_driver(proxy) :
options = Options()
options.add_argument(f'–proxy-server=http://{proxy}')
options.add_argument('–headless')
renvoyer webdriver.Chrome(options=options)
“`
- Récupérer le contenu dynamique
python
proxys = get_proxies()
pilote = get_chrome_driver(random.choice(proxies))
driver.get('https://quotes.toscrape.com/js/')
contenu = driver.page_source
pilote.quit()
Note poétique
Avec Selenium, le navigateur est votre pinceau, peignant la page comme l'utilisateur humain la verrait : JavaScript, CSS et toutes les nuances subtiles de l'interactivité.
Avantages et inconvénients
Fonctionnalité | Avantages | Inconvénients |
---|---|---|
Rendu JS | Gère tout contenu dynamique | Lourd en ressources |
Rotation des procurations | Masque efficacement la propriété intellectuelle | Les proxys peuvent ralentir ou bloquer le navigateur |
Détection | Plus humain, moins détectable | Les proxys gratuits sont souvent bloqués par les grands sites |
Workflow 3 : Marionnettiste avec ProxyChain pour les passionnés de Node.js
Ingrédients
Mesures
- Acquérir des proxys gratuits
javascript
const axios = require('axios');
fonction asynchrone getProxies() {
const res = await axios.get('https://www.proxy-list.download/api/v1/get?type=https');
renvoie res.data.split('\r\n').filter(Booléen);
}
- Utiliser ProxyChain pour faire tourner les proxys avec Puppeteer
« javascript
const marionnettiste = require('marionnettiste');
const ProxyChain = require('proxy-chain');
(async() => {
const proxys = wait getProxies();
pour (const proxyUrl de proxys) {
const anonymizedProxy = await ProxyChain.anonymizeProxy(http://${proxyUrl}
);
const browser = await puppeteer.launch({
arguments : [--proxy-server=${anonymizedProxy}
, '–no-sandbox', '–disable-setuid-sandbox'],
sans tête : vrai,
});
const page = await browser.newPage();
essayer {
attendre la page.goto('https://quotes.toscrape.com/js/', {waitUntil: 'networkidle2'});
const content = await page.content();
// Contenu du processus…
} attraper (e) {
// Ignorer les mauvais proxys
}
attendre browser.close();
}
})();
“`
Avantages et inconvénients
Fonctionnalité | Avantages | Inconvénients |
---|---|---|
Automation | Scripting robuste en Node.js | Dépendance Node.js |
Rotation des procurations | ProxyChain gère les échecs | Les proxys gratuits sont souvent instables/lents |
Contenu dynamique | Puppeteer rend tout JS | Débit limité par la vitesse du proxy |
Workflow 4 : Planification intelligente des requêtes avec Scrapy + Middleware proxy gratuit
Ingrédients
- Scrapy
- proxys rotatifs scrapy
- Listes de proxy gratuites (proxyscrape.com)
Mesures
- Installer le middleware
pip installe scrapy-rotating-proxies
- Configurer les paramètres de Scrapy
python
# settings.py
ROTATING_PROXY_LIST_PATH = 'proxies.txt'
TÉLÉCHARGEUR_MIDDLEWARES = {
'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}
- Remplir la liste des proxys
Téléchargez et enregistrez les proxys sur proxys.txt
:
https://api.proxyscrape.com/v2/?request=getproxies&protocol=http&timeout=1000&country=all&ssl=all&anonymity=all
- Grattez avec Scrapy Spider
Scrapy, avec ses proxies rotatifs, évolue sur la pointe des pieds dans le monde du contenu dynamique. Pour un code JavaScript complet, utilisez dramaturge décousu:
frapper
pip install scrapy-playwright
Et dans ton araignée :
« python
importer du scrapy
classe QuotesSpider(scrapy.Spider) :
nom = « guillemets »
start_urls = ['https://quotes.toscrape.com/js/']
def start_requests(self) : pour l'URL dans self.start_urls : yield scrapy.Request(url, meta={"playwright": True}) def parse(self, response) : pour la citation dans response.css("div.quote") : yield { "texte": quote.css("span.text::text").get(), "auteur": quote.css("small.author::text").get(), }
“`
Avantages et inconvénients
Fonctionnalité | Avantages | Inconvénients |
---|---|---|
Vitesse | Planification efficace des demandes | Courbe d'apprentissage pour Scrapy |
Rotation des procurations | Le middleware gère les interdictions | Les proxys gratuits moins fiables |
Prise en charge JS | Avec Playwright, gère le JS complet | Configuration lourde |
Workflow 5 : Scraping orienté API via des passerelles proxy gratuites
Ingrédients
- API de partage Web (niveau gratuit limité)
- Plan gratuit ScraperAPI (usage limité)
Mesures
- Obtenir une clé API ou un point de terminaison proxy
Inscrivez-vous et obtenez un point de terminaison gratuit.
- Demandes d'itinéraire via une passerelle proxy
Pour ScraperAPI :
python
api_key = 'VOTRE_CLÉ_API'
url = f'http://api.scraperapi.com/?api_key={api_key}&url=https://quotes.toscrape.com/js/'
réponse = requêtes.get(url)
Pour les proxys Web Share, utilisez comme dans les exemples précédents.
Avantages et inconvénients
Fonctionnalité | Avantages | Inconvénients |
---|---|---|
Fiabilité | Proxies gérés, moins de temps d'arrêt | Demandes gratuites limitées |
Facilité d'utilisation | Rotation des résumés par procuration | Peut bloquer certains sites |
Contenu dynamique | Certaines API rendent le JS avant de le renvoyer | Niveaux payants pour une utilisation intensive |
Tableau récapitulatif comparatif
Flux de travail | Prise en charge de Dynamic JS | Rotation des procurations | Fiabilité | Limitations gratuites | Meilleur cas d'utilisation |
---|---|---|---|---|---|
Requêtes + Proxies gratuits | Faible | Manuel | Faible | Proxies bloqués/lents | API XHR simples |
Sélénium + Proxys gratuits | Haut | Manuel | Moyen | Proxies bloqués, CPU élevé | Sites JS complexes, à petite échelle |
Marionnettiste + ProxyChain | Haut | Automatisé | Moyen | Pannes fréquentes du proxy | Automatisation Node.js |
Scrapy + Proxies rotatifs | Haut (avec le dramaturge) | Automatisé | Moyen | Configuration du middleware, proxys lents | Scraping avancé et évolutif |
Passerelles API proxy | Élevé (dépend de l'API) | Automatisé | Haut | Demandes limitées, inscription requise | Grattage unique et fiable |
Ressources
- liste-de-proxy-gratuite.net
- sslproxies.org
- proxy-list.download
- proxyscrape.com/free-proxy-list
- proxys rotatifs scrapy
- dramaturge décousu
- marionnettiste-extra-plugin-proxy
- Liste de proxys gratuits Web Share
- API de Scraper
Laissez votre code être le ciseau et vos mandataires le marbre : sculptez avec patience, car chaque page dynamique est une sculpture numérique, attendant une révélation sous la surface.
Commentaires (0)
Il n'y a pas encore de commentaires ici, vous pouvez être le premier !