
Web-Crawling mit Python in der Praxis!
Vor kurzem fragte einige Freunde Lao Zhang, wollen lernen, zu kriechen, aber immer von der Website IP blockiert, wie zu tun? Es ist wie ein Spiel zu spielen und immer aus dem Raum getreten. Heute werden wir darüber sprechen, wie man Python verwenden, um Web-Crawling in einfacher Sprache zu tun, mit Schwerpunkt auf, wie der Proxy-IP diese "Tarnkappe der Unsichtbarkeit" zu verwenden.
Bereiten Sie Ihren Werkzeugkasten vor
Beginnen wir mit dem Laden einiger grundlegender Dinge:
pip install requests beautifulsoup4
zur Kenntnis nehmenVerwenden Sie nicht die neueste Version der Bibliothek, einige der neueren Versionen haben Kompatibilitätsprobleme. Zum Beispiel ist Requests mit Version 2.25.1 stabiler.
Erstes Snippet von Scratch-Code für Anfänger
Beginnen wir mit einem einfachen Beispiel für das Erfassen des Preises einer E-Commerce-Website:
Anfragen importieren
von bs4 importieren BeautifulSoup
url = 'https://example.com/product'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
preis = soup.find('span', class_='preis').text
print(f "Aktueller Preis: {Preis}")
Zweimal dafür gesperrt zu werden, ist dasselbe, als wenn man im Supermarkt vom Sicherheitspersonal beobachtet wird, weil man wiederholt die Preisschilder durchblättert.
Der richtige Weg zur Eröffnung einer Proxy-IP
An dieser Stelle setzen wir unseren "Tarnmantel" ein - den ipipgo-Proxy-Service. Sie bietenAusschließliche Nutzung von HochgeschwindigkeitsstreckenSie ist viel robuster als öffentliche Vollmachten. Genau so funktioniert es:
proxies = {
'http': 'http://用户名:密码@gateway.ipipgo.com:端口',
'https': 'https://用户名:密码@gateway.ipipgo.com:端口'
}
response = requests.get(url, proxies=proxies, timeout=10)
Achten Sie darauf, dass Sie den Benutzernamen und das Passwort in die Anmeldedaten ändern, die Sie im ipipgo-Backend erhalten haben, kopieren Sie diesen Code nicht direkt von mir!
Wichtige Tipps für Greifer
1. IP-Rotationsstrategie:别可着一个IP,ipipgo的API能动态获取IP
zufällig importieren
def get_proxy(): proxy_list = ipipgo.get_proxy_list()
proxy_list = ipipgo.get_proxy_list() Dies ist ein Aufruf an die ipipgo API.
return random.choice(proxy_list)
2. Anfrage-Header getarnt als:: Das "Make-up" für den Antrag.
headers = {
'Accept-Language': 'zh-CN,zh;q=0.9'
}
Häufig gestellte Fragen Erste-Hilfe-Kasten
F: Was soll ich tun, wenn ich immer eine Zeitüberschreitung der Verbindung erhalte?
A: 80% ist der Agent ist nicht stabil, ändern Sie ipipgo exklusive Linie versuchen, verwenden Sie nicht frei Agent!
F: Die zurückgegebenen Daten sind verstümmelt?
A: Vergessen Sie nicht, response.encoding = 'utf-8' zu setzen, oder verwenden Sie die chardet-Bibliothek, um die automatische Erkennung der
F: Wie kann ich feststellen, ob meine IP-Adresse gesperrt ist?
A: Prüfen Sie, ob der Rückgabe-Statuscode 403 lautet oder der Inhalt der Webseite in der Liste der "zu oft besuchten" Seiten erscheint, wie z. B. Aufforderungen
Leitfaden zur Vermeidung der Grube
1) Verwenden Sie nicht time.sleep(1), um das Intervall festzulegen, sondern random.uniform(1,3).
2. kämpfen Sie nicht mit CAPTCHA, verwenden Sie ipipgo.Hochversteckte IPPakete verringern die Wahrscheinlichkeit der Auslösung von
3) Denken Sie daran, wichtige Daten lokal zwischenzuspeichern und nicht jedes Mal neu zu laden.
Zum Schluss möchte ich noch ein paar Worte sagen: Die Wahl eines Proxy-Dienstes ist wie die Suche nach einem Partner, wenn Sie einen kostenlosen Proxy für billig benutzen, werden Sie früher oder später in Schwierigkeiten geraten. ipipgo benutze ich seit einem halben Jahr, und ich benutze es schon seit langem.Die Stabilität kann sich wirklich bemerkbar machenDas Paket, insbesondere das Pay-as-you-go-Paket, ist besonders für kleine Projekte geeignet. Neulingen wird empfohlen, zunächst mit ihrem Erfahrungspaket zu üben und sich damit vertraut zu machen, bevor sie sich an den großen Verkehr wagen.

