Wenn Sie einen Crawler zum Crawlen von Daten schreiben, insbesondere beim Crawlen großer Datenmengen, kann es leicht passieren, dass die IP-Adresse blockiert wird und das Crawlen nicht fortgesetzt werden kann, da viele Websites über Anti-Crawler-Maßnahmen verfügen. In diesem Artikel werden einige Gegenmaßnahmen zur Lösung dieses Problems zusammengefasst. Diese Maßnahmen können einzeln oder gleichzeitig angewendet werden, um bessere Ergebnisse zu erzielen.
Setzen Sie den User-Agent im Anforderungsheader auf den User-Agent im Browser, um den Browserzugriff vorzutäuschen. Zum Beispiel:
headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'} resp = requests.get(url,headers = headers)
# 比如: time.sleep(random.randint(0,3)) # 暂停0~3秒的整数秒,时间区间:[0,3] # 或: time.sleep(random.random()) # 暂停0~1秒,时间区间:[0,1)
Wenn Sie normal über den Browser auf eine Seite zugreifen können, können Sie die Cookies kopieren im Browser und verwenden Sie sie, wie zum Beispiel:
cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',UM_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd') resp = requests.get(url,cookies = cookies)
# 把浏览器的cookies字符串转成字典 def cookies2dict(cookies): items = cookies.split(';') d = {} for item in items: kv = item.split('=',1) k = kv[0] v = kv[1] d[k] = v return d
Hinweis: Wenn die Anforderungshäufigkeit nach der Verwendung von Browser-Cookies zum Initiieren einer Anforderung zu häufig ist, wird die IP weiterhin blockiert. Zu diesem Zeitpunkt können Sie sie ausführen Führen Sie die entsprechenden Aktionen im Browser durch. Manuelle Überprüfung (z. B. Klicken auf das Überprüfungsbild usw.). Anschließend können Sie das Cookie weiterhin verwenden, um Anfragen normal zu stellen.
Sie können mehrere Proxy-IPs für den Zugriff verwenden, um zu verhindern, dass dieselbe IP zu viele Anfragen stellt und blockiert wird, wie zum Beispiel:
proxies = {'http':'http://10.10.10.10:8765','https':'https://10.10.10.10:8765'} resp = requests.get(url,proxies = proxies) # 注:免费的代理IP可以在这个网站上获取:http://www.xicidaili.com/nn/
[Empfohlene Kurse :Python-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonSo verhindern Sie, dass IP vom Python-Crawler blockiert wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!