Skip to content

So verwenden Sie Proxies mit Python Requests für Web-Scraping, einschließlich Einrichtung, Rotierender Proxies und Integration der Proxy-Services von Bright Data

Notifications You must be signed in to change notification settings

bright-data-de/Proxy-with-python-requests

Repository files navigation

Verwenden eines Proxy mit Python Requests

Promo

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

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.

Komponenten einer Proxy-IP-Adresse

Die drei primären Komponenten eines Proxy-Servers sind:

  1. Protokoll ist typischerweise entweder HTTP oder HTTPS.
  2. Adresse kann eine IP-Adresse oder ein DNS-Hostname sein.
  3. 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.

Proxies direkt in Requests festlegen

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:

  1. Importieren Sie die Pakete Requests und Beautiful Soup in Ihr Python-Skript.
  2. Erstellen Sie ein Verzeichnis namens proxies, das Informationen zum Proxy-Server enthält.
  3. Definieren Sie im Verzeichnis proxies sowohl die HTTP- als auch die HTTPS-Verbindungen zur Proxy-URL.
  4. Definieren Sie die Python-Variable, um die URL der Webseite festzulegen, von der Sie die Daten scrapen möchten. Verwenden Sie https://brightdata.de.
  5. 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 Variable response gespeichert.
  6. Übergeben Sie response.content und html.parser als Argumente an die Methode BeautifulSoup(), um Links zu sammeln.
  7. Verwenden Sie die Methode find_all() mit a als Argument, um alle Links auf der Webseite zu finden.
  8. Extrahieren Sie das Attribut href jedes Links mit der Methode get().

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:

Scraped links

Proxies über Umgebungsvariablen festlegen

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 mit einer benutzerdefinierten Methode und einem Array von Proxies

Promo

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:

  1. Importieren Sie die folgenden Python-Bibliotheken: Requests, Beautiful Soup und Random.
  2. 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"  
]
  1. Erstellen Sie eine benutzerdefinierte Methode namens get_proxy(). Sie wählt mithilfe der Methode random.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}  
  1. 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 Methode get_proxy() angegeben wird.

  2. Sammeln Sie die Links aus dem HTML-Inhalt der Webseite mithilfe des Beautiful Soup-Pakets, wie zuvor erklärt.

  3. 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)

Den Bright Data Proxy-Service mit Python verwenden

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:

  1. Klicken Sie auf der Willkommensseite auf View proxy product, um die verschiedenen von Bright Data angebotenen Proxy-Typen anzuzeigen:

Bright Data proxy types

  1. 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:

Datacenter proxies configuration

  1. 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:

Datacenter proxy parameters

  1. Kopieren Sie diese Parameter in Ihr Skript und verwenden Sie das folgende Format der Proxy-URL: username-(session-id)-password@host:port.

Hinweis:
Die session-id ist eine Zufallszahl, die mithilfe eines Python-Pakets namens random erstellt 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.

Fazit

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!

About

So verwenden Sie Proxies mit Python Requests für Web-Scraping, einschließlich Einrichtung, Rotierender Proxies und Integration der Proxy-Services von Bright Data

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published