In diesem Leitfaden erfahren Sie, wie Sie Proxies mit Python requests verwenden, insbesondere für Web-Scraping, um Website-Beschränkungen zu umgehen, indem Sie Ihre IP-Adresse und Ihren Standort ändern:
- Verwenden eines Proxy mit einer Python-Anfrage
- Installieren von Paketen
- Komponenten einer Proxy-IP-Adresse
- Proxies direkt in Requests festlegen
- Proxies über Umgebungsvariablen festlegen
- Rotierende Proxies mit einer benutzerdefinierten Methode und einem Array von Proxies
- Den Bright Data Proxy-Service mit Python verwenden
- Fazit
Verwenden Sie pip install, um die folgenden Python-Pakete zu installieren, um Anfragen an die Webseite zu senden und die Links zu sammeln:
requests: sendet HTTP-Anfragen an die Website, von der Sie die Daten scrapen möchten.beautifulsoup4: parst HTML- und XML-Dokumente, um alle Links zu extrahieren.
Die drei primären Komponenten eines Proxy-Servers sind:
- Protokoll ist typischerweise entweder HTTP oder HTTPS.
- Adresse kann eine IP-Adresse oder ein DNS-Hostname sein.
- Portnummer liegt irgendwo zwischen 0 und 65535, z. B.
2000.
Daher würde eine Proxy-IP-Adresse so aussehen: https://192.167.0.1:2000 oder
https://proxyprovider.com:2000.
Dieser Leitfaden behandelt drei Möglichkeiten, Proxies in requests festzulegen. Der erste Ansatz geht davon aus, dass dies direkt im requests-Modul erfolgt.
Gehen Sie wie folgt vor:
- Importieren Sie die Pakete Requests und Beautiful Soup in Ihr Python-Skript.
- Erstellen Sie ein Verzeichnis namens
proxies, das Informationen zum Proxy-Server enthält. - Definieren Sie im Verzeichnis
proxiessowohl die HTTP- als auch die HTTPS-Verbindungen zur Proxy-URL. - Definieren Sie die Python-Variable, um die URL der Webseite festzulegen, von der Sie die Daten scrapen möchten. Verwenden Sie
https://brightdata.de. - Senden Sie eine GET-Anfrage an die Webseite, indem Sie die Methode
request.get()mit zwei Argumenten verwenden: die URL der Website und Proxies. Die Antwort wird in der Variableresponsegespeichert. - Übergeben Sie
response.contentundhtml.parserals Argumente an die MethodeBeautifulSoup(), um Links zu sammeln. - Verwenden Sie die Methode
find_all()mitaals Argument, um alle Links auf der Webseite zu finden. - Extrahieren Sie das Attribut
hrefjedes Links mit der Methodeget().
Hier ist der vollständige Quellcode:
# import packages.
import requests
from bs4 import BeautifulSoup
# Define proxies to use.
proxies = {
'http': 'http://proxyprovider.com:2000',
'https': 'https://proxyprovider.com:2000',
}
# Define a link to the web page.
url = "https://example.com/"
# Send a GET request to the website.
response = requests.get(url, proxies=proxies)
# Use BeautifulSoup to parse the HTML content of the website.
soup = BeautifulSoup(response.content, "html.parser")
# Find all the links on the website.
links = soup.find_all("a")
# Print all the links.
for link in links:
print(link.get("href"))
Hier ist die Ausgabe beim Ausführen des obigen Skripts:
Um denselben Proxy für alle Anfragen zu verwenden, ist es am besten, Umgebungsvariablen im Terminalfenster zu setzen:
export HTTP_PROXY='http://proxyprovider.com:2000'
export HTTPS_PROXY='https://proxyprovider.com:2000'Sie können die Proxies-Definition jetzt aus dem Skript entfernen:
# import packages.
import requests
from bs4 import BeautifulSoup
# Define a link to the web page.
url = "https://example.com/"
# Send a GET request to the website.
response = requests.get(url)
# Use BeautifulSoup to parse the HTML content of the website.
soup = BeautifulSoup(response.content, "html.parser")
# Find all the links on the website.
links = soup.find_all("a")
# Print all the links.
for link in links:
print(link.get("href"))
Rotierende Proxies helfen dabei, die Beschränkungen zu umgehen, die Websites setzen, wenn sie eine große Anzahl von Anfragen von derselben IP-Adresse erhalten.
Gehen Sie wie folgt vor:
- Importieren Sie die folgenden Python-Bibliotheken: Requests, Beautiful Soup und Random.
- Erstellen Sie eine Liste von Proxies, die während des Rotationsprozesses verwendet werden sollen. Verwenden Sie das Format
http://proxyserver.com:port:
# List of proxies
proxies = [
"http://proxyprovider1.com:2010", "http://proxyprovider1.com:2020",
"http://proxyprovider1.com:2030", "http://proxyprovider2.com:2040",
"http://proxyprovider2.com:2050", "http://proxyprovider2.com:2060",
"http://proxyprovider3.com:2070", "http://proxyprovider3.com:2080",
"http://proxyprovider3.com:2090"
]
- Erstellen Sie eine benutzerdefinierte Methode namens
get_proxy(). Sie wählt mithilfe der Methoderandom.choice()zufällig einen Proxy aus der Proxy-Liste aus und gibt den ausgewählten Proxy im Dictionary-Format zurück (sowohl mit HTTP- als auch HTTPS-Keys). Sie verwenden diese Methode immer dann, wenn Sie eine neue Anfrage senden:
# Custom method to rotate proxies
def get_proxy():
# Choose a random proxy from the list
proxy = random.choice(proxies)
# Return a dictionary with the proxy for both http and https protocols
return {'http': proxy, 'https': proxy}
-
Erstellen Sie eine Schleife, die eine bestimmte Anzahl von GET-Anfragen unter Verwendung der rotierenden Proxies sendet. In jeder Anfrage verwendet die Methode
get()einen zufällig ausgewählten Proxy, der durch die Methodeget_proxy()angegeben wird. -
Sammeln Sie die Links aus dem HTML-Inhalt der Webseite mithilfe des Beautiful Soup-Pakets, wie zuvor erklärt.
-
Fangen Sie alle Ausnahmen ab, die während des Anfrageprozesses auftreten, und geben Sie sie aus.
Hier ist der vollständige Quellcode für dieses Beispiel:
# import packages
import requests
from bs4 import BeautifulSoup
import random
# List of proxies
proxies = [
"http://proxyprovider1.com:2010", "http://proxyprovider1.com:2020",
"http://proxyprovider1.com:2030", "http://proxyprovider2.com:2040",
"http://proxyprovider2.com:2050", "http://proxyprovider2.com:2060",
"http://proxyprovider3.com:2070", "http://proxyprovider3.com:2080",
"http://proxyprovider3.com:2090"
]
# Custom method to rotate proxies
def get_proxy():
# Choose a random proxy from the list
proxy = random.choice(proxies)
# Return a dictionary with the proxy for both http and https protocols
return {'http': proxy, 'https': proxy}
# Send requests using rotated proxies
for i in range(10):
# Set the URL to scrape
url = 'https://brightdata.de/'
try:
# Send a GET request with a randomly chosen proxy
response = requests.get(url, proxies=get_proxy())
# Use BeautifulSoup to parse the HTML content of the website.
soup = BeautifulSoup(response.content, "html.parser")
# Find all the links on the website.
links = soup.find_all("a")
# Print all the links.
for link in links:
print(link.get("href"))
except requests.exceptions.RequestException as e:
# Handle any exceptions that may occur during the request
print(e)
Bright Data verfügt über ein großes Netzwerk von mehr als 72 Millionen residential proxy IPs und mehr als 770.000 datacenter proxies.
Sie können Bright Data’s datacenter proxies in Ihre Python requests integrieren. Sobald Sie ein Konto bei Bright Data haben, folgen Sie diesen Schritten, um Ihren ersten Proxy zu erstellen:
- Klicken Sie auf der Willkommensseite auf View proxy product, um die verschiedenen von Bright Data angebotenen Proxy-Typen anzuzeigen:
- Wählen Sie Datacenter Proxies, um einen neuen Proxy zu erstellen, und fügen Sie auf der folgenden Seite Ihre Details hinzu und speichern Sie diese:
- Sobald Ihr Proxy erstellt ist, zeigt Ihnen das Dashboard Parameter wie den Host, den Port, den Benutzernamen und das Passwort, die Sie in Ihren Skripten verwenden:
- Kopieren Sie diese Parameter in Ihr Skript und verwenden Sie das folgende Format der Proxy-URL:
username-(session-id)-password@host:port.
Hinweis:
Diesession-idist eine Zufallszahl, die mithilfe eines Python-Pakets namensrandomerstellt wird.
Hier ist der Code, der einen Proxy von Bright Data in einer Python-Anfrage verwendet:
import requests
from bs4 import BeautifulSoup
import random
# Define parameters provided by Brightdata
host = 'brd.superproxy.io'
port = 33335
username = 'username'
password = 'password'
session_id = random.random()
# format your proxy
proxy_url = ('http://{}-session-{}:{}@{}:{}'.format(username, session_id,
password, host, port))
# define your proxies in dictionary
proxies = {'http': proxy_url, 'https': proxy_url}
# Send a GET request to the website
url = "https://example.com/"
response = requests.get(url, proxies=proxies)
# Use BeautifulSoup to parse the HTML content of the website
soup = BeautifulSoup(response.content, "html.parser")
# Find all the links on the website
links = soup.find_all("a")
# Print all the links
for link in links:
print(link.get("href"))
Das Ausführen dieses Codes führt eine erfolgreiche Anfrage über Bright Data’s proxy service aus.
Mit der Web-Plattform von Bright Data können Sie zuverlässige Proxies für Ihr Projekt erhalten, die jedes Land oder jede Stadt weltweit abdecken. Testen Sie Bright Data's proxy services jetzt kostenlos!





