Ich versuche, einige Web-Scraping für ein Projekt für meine Studie zu tun. Leider muss ich einige Daten von Google Scholar scrappen, die meine Anfragen blockieren. Ich habe versucht, (mehrere) HTTP-Proxies zu verwenden, aber meine Anfragen werden immer noch nach ~ 300 Versuchen blockiert.Python Requests-Bibliothek mit Proxies - Get-Anfrage immer noch senden meine eigene IP
Der resultierende HTML-Code aus den blockierten Anfragen enthält:
IP address: 145.109...<br/>Time: 2016-05-05T09:23:37Z<br/>URL:
https://scholar.google.nl/citations?hl=en&view_op=search_authors
&mauthors=Perry<br/>
Die obige IP meines eigenen ist, während meine Proxies dict (es einen Proxy aus einer Liste zufällig auswählt) und Anfrage sieht wie folgt erhalten:
proxies = {'http': 'http://<username>:<password>@107.182....:<port>'}
result = requests.get('https://scholar.google.nl/citations?hl=en&
amp;view_op=search_authors&mauthors=Perry',
proxies=proxies, headers=headers)
Die IPs von sind natürlich gültig und arbeiten und meine eigene IP ist nicht in der Proxy-Liste enthalten. Mache ich etwas falsch?
Edit: Der Vollständigkeit halber habe ich auch versucht Einstellung Authentifizierung wie this Antwort schlägt vor, aber das Ergebnis ist das gleiche.
Was ist ''? Wenn es mehr Einträge mit "http" als Schlüssel gibt, ist dies ein Diktat, nur eines wird beibehalten. Und Sie fordern eine https-URL an. Wenn Sie also keinen https-Eintrag in Ihrem Proxy-Dict haben, wird kein Proxy verwendet. –
mata
Ah schlecht formuliert, ich werde meine Frage bearbeiten. Die Proxies sind tatsächlich in einer Liste enthalten und wählen zufällig eine aus und fügen diese dem Diktat hinzu. Aber es ist https und der Proxy http löst die Frage. Könnten Sie es vielleicht als Antwort hinzufügen, damit ich es auswählen kann? Ziemlich blöd dass ich das verpasst habe, Danke! – Truub