
Warum werden Crawler immer erwischt? Versuchen Sie Proxy IP + Class Selector Combo
Brüder in Daten Crawling beschäftigt verstehen, dass die Web-Seite, um einen Klassennamen in Minuten ändern, damit Sie Skript verschrottet. Kürzlich fand eine wilde Art und Weise - der Proxy-IP-und XPath-Klasse Selektor mit der Verwendung von Crawlern gebunden, wie eine intelligente Verkleidung System installiert. Zum Beispiel, mit//div[contains(@class,'list-item')]Selbst wenn die Website den Klassennamen von "item-1″ in "item_new" ändert, können wir mit dieser Art der unscharfen Übereinstimmung die Daten erfassen.
Anfragen importieren
von lxml importieren html
proxies = {
'http': 'http://user:pass@ipipgo-proxy:9020',
'https': 'http://user:pass@ipipgo-proxy:9020'
}
response = requests.get('https://target.com', proxies=proxies)
tree = html.fromstring(response.text)
Fuzzy-Match-Klasse mit Elementen
items = tree.xpath("//div[enthält(@class,'item')]/text()")
Der Schwerpunkt liegt hier auf ipipgo'sDynamische WohnungsvermittlerEr hat über 2 Millionen echte Heimnetzwerkadressen in seinem IP-Pool. Das letzte Mal, als ich das mit einem Klassenselektor gemacht habe, habe ich es eine Woche lang durchlaufen lassen, ohne dass ein Backcrawl ausgelöst wurde.
Zweitens, der Klassenselektor der drei großen Arbeit
Seien Sie kein Dummkopf und verwenden Sie den vollständigen Klassennamen, denn mit diesen drei Tricks werden Sie nicht so leicht rückfällig:
| Art und Weise | typisches Beispiel | Verwendungsszenarien |
|---|---|---|
| unscharfer Abgleich | enthält(@class,'Teil') | Klassenname mit dynamischem Suffix |
| Mehrere Filter | [enthält(@class,'a') und enthält(@class,'b')] | Zusammengesetzte Klassenstile |
| hierarchische Positionierung | //div[@class='wrap']//li[contains(@class,'item')] | Verschachtelte Strukturanalyse |
Beachten Sie, dass im Klassennamen versteckte Fallen enthalten sein können, z. B. wird die Produktklasse eines bestimmten Schatzes einen Zeitstempel tragen. Diesmal verwenden Sie ipipgo'sRotationsmittelDie IP wird automatisch alle 5 Minuten geändert und ist mit Fuzzy Matching so zuverlässig wie ein alter Hund.
Drittens, die korrekte Öffnungshaltung des Proxy-IP
Ich habe schon zu viele Menschen erlebt, die gute Agenten vergeudet haben, also denken Sie an diese drei Dinge:
- Setzen Sie keine freien Mitarbeiter ein.8 von 10 sind Honigtöpfe, die restlichen 2 sind langsamer als Schnecken.
- Das Protokoll muss richtig sein.Verwenden Sie keinen http-Proxy, wenn Sie https auf Ihrer Webseite verwenden, da dies zu einem Leck führt.
- Timeout-EinstellungEmpfohlen wird, 3-5 Sekunden einzustellen, mehr als der direkte IP-Wechsel
Nehmen Sie den Proxy von ipipgo als Beispiel, er unterstützt Socks5 und https als duales Protokoll. Es wird empfohlen, ihn auf diese Weise zu konfigurieren:
PROXY_POOL = [
"socks5://user:pass@us1.ipipgo.io:1080",
"https://user:pass@eu1.ipipgo.io:8443"
]
IV. Leitfaden zur Vermeidung von Fallstricken in der Praxis
Kürzlich half ich einem Freund, eine Website zur Personalbeschaffung zu erstellen, und stieß dabei auf ein merkwürdiges Problem: Natürlich verwendete ich den Klassenselektor, aber die Daten fehlten mir trotzdem. Später stellte ich fest, dass die Website einen Teil des Inhalts in die<div class="item item-hidden">Ri. Die Lösung ist einfach:
Enthält sowohl item als auch item-hidden Fälle
items = tree.xpath("//div[contains(@class,'item') and not(contains(@class,'hidden'))]")
Wenn Sie jetzt einen normalen Proxy verwenden, werden häufige Wiederholungen blockiert. Wechseln Sie zu ipipgo'sLangfristige statische IP-Adresse für PrivatanwenderDie einzelne IP reicht für 6 Stunden, und mit diesem Präzisionsselektor wird die Erfolgsquote bis zur vollen Kapazität gezogen.
V. Häufig gestellte Fragen QA
F: Was soll ich tun, wenn der Klassenselektor immer nicht passt?
A: Prüfen Sie zunächst, ob sich das Element in einem iframe befindet, und kopieren Sie dann den XPath mit dem Browser-Entwicklungstool. Es wird empfohlen, mit ipipgo'sHochgradig anonyme Agentenum nicht blockiert zu werden.
F: Was sollte ich tun, wenn meine Proxy-IP plötzlich ausfällt?
A: Hinzufügen eines Mechanismus zur Wiederholung von Ausnahmen im Anforderungscode, empfohlen wird die Verwendung von ipipgo'sAutomatische PaketumschaltungDie nächste IP wird automatisch abgeschaltet, wenn sie ausfällt.
F: Was ist, wenn ich mit einer großen Anzahl von CAPTCHAs umgehen muss?
A: Reduzieren Sie die Häufigkeit der Anfragen und verwenden Sie einen Proxy mit Browser-Fingerprinting. ipipgo'sPremium-AgentUnterstützung benutzerdefinierter User-Agent, kann die CAPTCHA-Auslöserate effektiv reduzieren.
VI. Endgültige Lösungen
Die Bündelung von Proxy-IPs und intelligenter Auflösung als Dienst ist der richtige Weg. Zum Beispiel, mit ipipgo'sAPI-Gateway-DienstWenn Sie die bereinigten Daten erhalten wollen, können Sie den XPath-Ausdruck direkt übergeben. Dadurch wird sogar die Proxy-Verwaltung und das HTML-Parsing eingespart, geeignet für den Bedarf, schnell aus den Ergebnissen der Szene herauszukommen.
Einfuhrgesuche
api_url = "https://gateway.ipipgo.com/v1/extract"
params = {
"url": "https://target.com",
"xpath":"//div[enthält(@class,'Preis')]",
"api_key": "your_ipgo_key"
}
response = requests.get(api_url, params=params)
print(response.json()['data'])
Dieses Spiel verlagert die Komplexität auf den Dienstanbieter und konzentriert sich auf die Geschäftslogik selbst. Es eignet sich besonders für Situationen, die eine multigeografische Datenerfassung erfordern, wie z. B. die gleichzeitige Beschaffung von Preisinformationen aus verschiedenen Regionen.

