Si vous travaillez un peu avec Python, notamment dans le cas particulier du data scraping, vous avez probablement rencontré des situations où vous êtes bloqué en essayant de récupérer les données que vous vouloir. Dans une telle situation, savoir utiliser un proxy est une compétence pratique à posséder.
Dans cet article, nous explorerons ce que sont les proxys, pourquoi ils sont utiles et comment vous pouvez les utiliser à l'aide de la requête de bibliothèque en Python.
Commençons par le début en définissant ce qu'est un proxy.
Vous pouvez considérer un serveur proxy comme un « intermédiaire » entre votre ordinateur et Internet. Lorsque vous envoyez une requête à un site Web, la requête passe d'abord par le serveur proxy. Le proxy transmet ensuite votre demande au site Web, reçoit la réponse et vous la renvoie. Ce processus masque votre adresse IP, donnant l'impression que la demande provient du serveur proxy au lieu de votre propre appareil.
Comme cela peut être compris, cela a beaucoup de conséquences et d'utilisations. Par exemple, il peut être utilisé pour contourner certaines restrictions IP embêtantes ou pour maintenir l'anonymat.
Alors, pourquoi les proxys pourraient-ils être utiles lors de la récupération de données ? Eh bien, nous avons déjà donné une raison auparavant. Par exemple, vous pouvez les utiliser pour contourner certaines restrictions.
Ainsi, dans le cas particulier du web scraping, ils peuvent être utiles pour les raisons suivantes :
La bibliothèque de requêtes est un choix populaire pour effectuer des requêtes HTTP en Python et l'intégration de proxys dans vos requêtes est simple.
Voyons comment !
Tout d'abord : vous devez obtenir des proxys valides avant de les utiliser. Pour ce faire, vous avez deux options :
Maintenant que vous avez votre liste de proxys, vous pouvez commencer à les utiliser. Par exemple, vous pouvez créer un dictionnaire comme celui-ci :
proxies = { 'http': 'http://proxy_ip:proxy_port', 'https': 'https://proxy_ip:proxy_port', }
Vous pouvez désormais faire une demande en utilisant les proxys :
import requests proxies = { 'http': 'http://your_proxy_ip:proxy_port', 'https': 'https://your_proxy_ip:proxy_port', } response = requests.get('https://httpbin.org/ip', proxies=proxies)
Pour voir le résultat de votre demande, vous pouvez imprimer la réponse :
print(response.status_code) # Should return 200 if successful print(response.text) # Prints the content of the response
Notez que si tout s'est bien passé, la réponse doit afficher l'adresse IP du serveur proxy, pas la vôtre.
Si votre proxy nécessite une authentification, vous pouvez la gérer de plusieurs manières.
Méthode 1 : inclure les informations d'identification dans l'URL du proxy
Pour inclure le nom d'utilisateur et le mot de passe pour gérer l'authentification dans votre proxy, vous pouvez le faire :
proxies = { 'http': 'http://username:password@proxy_ip:proxy_port', 'https': 'https://username:password@proxy_ip:proxy_port', }
Méthode 2 : utiliser HTTPProxyAuth
Alternativement, vous pouvez utiliser la classe HTTPProxyAuth pour gérer l'authentification comme suit :
from requests.auth import HTTPProxyAuth proxies = { 'http': 'http://proxy_ip:proxy_port', 'https': 'https://proxy_ip:proxy_port', } auth = HTTPProxyAuth('username', 'password') response = requests.get('https://httpbin.org/ip', proxies=proxies, auth=auth)
L'utilisation d'un seul proxy peut ne pas suffire si vous faites de nombreuses demandes. Dans ce cas, vous pouvez utiliser un proxy tournant : cela modifie l'adresse IP du proxy à intervalles réguliers ou par requête.
Si vous souhaitez tester cette solution, vous avez deux options : faire pivoter manuellement les proxys à l'aide d'une liste ou utiliser un service de rotation de proxy.
Voyons les deux approches !
Si vous avez une liste de proxys, vous pouvez les faire pivoter manuellement comme ceci :
import random proxies_list = [ 'http://proxy1_ip:port', 'http://proxy2_ip:port', 'http://proxy3_ip:port', # Add more proxies as needed ] def get_random_proxy(): proxy = random.choice(proxies_list) return { 'http': proxy, 'https': proxy, } for i in range(10): proxy = get_random_proxy() response = requests.get('https://httpbin.org/ip', proxies=proxy) print(response.text)
Des services comme ScraperAPI gèrent la rotation du proxy pour vous. Il vous suffit généralement de mettre à jour l'URL du proxy qu'ils fournissent et de gérer un dictionnaire d'URL comme ceci :
proxies = { 'http': 'http://your_service_proxy_url', 'https': 'https://your_service_proxy_url', } response = requests.get('https://httpbin.org/ip', proxies=proxies)
L'utilisation d'un proxy en Python est une technique précieuse pour le web scraping, les tests et l'accès au contenu géo-restreint. Comme nous l'avons vu, l'intégration de proxys dans vos requêtes HTTP est simple grâce aux requêtes de la bibliothèque.
Quelques conseils lors de la récupération de données sur le Web :
Bon codage !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!