Max retries exceeded with URL-Anfragen
Ich versuche, den Inhalt von App-Store - > Business:
import requests
from lxml import html
page = requests.get("https://itunes.apple.com/in/genre/ios-business/id6000?mt=8")
tree = html.fromstring(page.text)
flist = []
plist = []
for i in range(0, 100):
app = tree.xpath("//div[@class='column first']/ul/li/a/@href")
ap = app[0]
page1 = requests.get(ap)
Wenn ich versuche, den range
mit (0,2)
es funktioniert, aber wenn ich mir die range
im 100
s es zeigt diese Fehlermeldung:
Traceback (most recent call last):
File "/home/preetham/Desktop/eg.py", line 17, in <module>
page1 = requests.get(ap)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 55, in get
return request('get', url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 378, in send
raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='itunes.apple.com', port=443): Max retries exceeded with url: /in/app/adobe-reader/id469337564?mt=8 (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)
- Sollten Sie nicht verwenden
i
variable irgendwo in derfor
? - Sie sind wie die Beantragung der gleichen app 100 mal. was ist dass denn??
- Ich bin mit ich im rest des Codes. Ich habe nicht den ganzen code gepostet
- Ich bin nicht der anfragende für die gleiche app 100 mal. Ich bin ersuchenden für 100 verschiedene apps unter die gleiche Kategorie.
- Sieht aus wie Ihre DNS-resolver ist nicht in der Lage zu beheben
itunes.apple.com
. Kann mandig itunes.apple.com
auf die Befehlszeile und die Ergebnisse hier posten? - Dies ist nicht eine
requests
problem; deine Fehlermeldung bezieht sich auf Ihr DNS-server ist nicht in der Lage, um den Namen aufzulösenitunes.apple.com
. - ; <<>> DiG 9.8.1-P1 <<>> itunes.apple.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59154 ;; flags: qr rd ra; QUERY: 1, ANTWORT: 4, BEHÖRDE: 8, ZUSÄTZLICHE Informationen: 8 ;; QUESTION SECTION: ;itunes.apple.com. IN A ;; ANTWORT-ABSCHNITT: itunes.apple.com. 5 IN CNAME itunes-cdn.apple.com.akadns.net. itunes-cdn.apple.com.akadns.net. 5 IN CNAME itunes.apple.com.edgekey.net. itunes.apple.com.edgekey.net. 5 IN CNAME e673.e9.akamaiedge.net. e673.e9.akamaiedge.net. 5 IN EINER 23.58.18.217
- ;; AUTHORITY SECTION: e9.akamaiedge.net. 5 IN NS a1e9.akamaiedge.net. e9.akamaiedge.net. 5 IN NS n0e9.akamaiedge.net. e9.akamaiedge.net. 5 IN NS n1e9.akamaiedge.net. e9.akamaiedge.net. 5 IN NS n2e9.akamaiedge.net. e9.akamaiedge.net. 5 IN NS n3e9.akamaiedge.net. e9.akamaiedge.net. 5 IN NS n4e9.akamaiedge.net. e9.akamaiedge.net. 5 IN NS n5e9.akamaiedge.net. e9.akamaiedge.net. 5 IN NS a0e9.akamaiedge.net.
- ;; ZUSÄTZLICHER ABSCHNITT: a0e9.akamaiedge.net. 5 IN AAAA 2a02:26f0:32:f000:f508:4182:8bda:dd8a a1e9.akamaiedge.net. 5 IN AAAA 2600:1417:11:f000:9207:4182:8bda:dd8a n0e9.akamaiedge.net. 5 IN EINER 88.221.81.194 n1e9.akamaiedge.net. 5 IN EINER 61.213.146.7 n2e9.akamaiedge.net. 5 IN EINER 61.213.146.9 n3e9.akamaiedge.net. 5 IN EINER 88.221.81.195 n4e9.akamaiedge.net. 5 IN EINER 88.221.81.192 n5e9.akamaiedge.net. 5 IN EINER 88.221.81.192 ;; Query time: 3594 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Fri Apr 11 18:47:21 2014 ;; MSG SIZE rcvd: 471
- wenn ich versuche, den Bereich mit (0,2) funktioniert es aber wenn ich den Bereich in-100-es zeigt diesen Fehler. wenn der Fehler mit der Lösung itunes.apple.com dann würde es nicht funktionieren, für den Bereich(0,2)
- Ich hatte auch diesen Fehler, ich löste es, indem Sie die 9150-port 9050
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was hier passiert ist, dass itunes server weigert sich, Ihre Verbindung (die Sie versenden zu viele Anfragen von der gleichen ip-Adresse in kurzer Zeit)
error-trace) ist irreführend, es sollte so etwas wie "es konnte Keine Verbindung hergestellt werden, da der Zielcomputer aktiv verweigert".
Gibt es ein Problem bei python.Anfragen lib auf Github, check it out hier
Überwinden dieses Problem (nicht so sehr ein Problem, da es irreführend ist debug, trace), die Sie fangen sollte mit der Verbindung zu tun-Ausnahmen etwa so:
Anderen Weg, um dieses problem zu überwinden ist, wenn Sie genug Zeit, die Lücke zum senden von Anforderungen an server erreicht werden kann dies durch
sleep(timeinsec)
Funktion in python (vergessen Sie nicht zu importieren schlafen)Alles in allem Wünsche ist genial python-lib, die Hoffnung, die Ihr problem löst.
(Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)
Teil. "gai" steht fürgetaddrinfo
, und die wahrscheinlich Verwandte Fehler ist: EAI_NONAME Der Knoten oder der Dienst ist nicht bekannt; oder beide Knoten-und service-NULL sind; oder AI_NUMERICSERV angegeben wurde, in Andeutungen.ai_flags und der service war nicht eine numerische port-Nummer string. Sie wahrscheinlich sah, wie der Schlaf es behoben, aber Sie haben wahrscheinlich nur verpennt eine vorübergehende DNS-resolver Problem.Verwenden Sie einfach
requests'
features:Diese wird
GET
die URL und wiederholen Sie 3-mal, im Fall vonrequests.exceptions.ConnectionError
.backoff_factor
helfen zu gelten Verzögerungen zwischen versuchen zu vermeiden, wieder zu Versagen im Fall der periodischen Kontingent anfordern.Werfen Sie einen Blick auf
- Anfragen.- Pakete.urllib3.util.wiederholen Sie den Vorgang.Wiederholen
, es hat viele Optionen zu vereinfachen, Wiederholungen.Nur dazu,
Fügen Sie den folgenden code an die Stelle von
page = requests.get(url)
:Du bist willkommen 🙂
import time
requests
hat seinen eigenen code für die Fehler und wiederholenexcept: ...
) vonrequests
undsleep()
Antwort. Stattdessen sollten Sie fangenrequests.exceptions.ConnectionError
undsleep()
nur, wenn diese Ausnahme Auftritt. (Oder noch besser, benutzen Sie einfach die eingebauteRetry()
Klasse, kommt mitrequests
- so der Vorschlag von @Zulu).pip install pyopenssl
schien es zu lösen für mich.https://github.com/requests/requests/issues/4246
Ich habe ähnliches problem, aber der folgende code funktionierte für mich.
"verify=False" deaktiviert die SSL-überprüfung. Versuchen Sie, und fangen können Hinzugefügt werden, wie üblich.
Es ist immer gut zu implementieren der Ausnahmebehandlung. Es ist nicht nur helfen, um zu vermeiden, unerwarteten beenden des Skripts, sondern kann auch dabei helfen, log -, Fehler-und info-Mitteilung. Bei der Verwendung von Python-Anfragen, die ich lieber zum abfangen von Ausnahmen, wie diese:
Hier renewIPadress() ist eine benutzerdefinierte Funktion, die die IP-Adresse ändern, wenn es gesperrt werden. Sie gehen können, ohne diese Funktion.
ip-adrress
in python, tun Sie etwas darüber wissen, dann lasst es mich wissenWenn ich schrieb einen selenium-browser-test-script, dass ich auf diese Fehler beim Aufruf von
driver.quit()
vor einer Verwendung der JS-api-Aufruf.Denken Sie daran, dass quiting webdriver ist das Letzte, was zu tun ist!Fügen Sie die Kopfzeilen für diese Anfrage.
}
Hinzufügen, meine eigene Erfahrung für diejenigen, die erfahren sind diese in die Zukunft. Meine konkreten Fehler war
Es stellt sich heraus, dass dies eigentlich war, denn ich hatte, erreichen die maximale Anzahl der geöffneten Dateien auf meinem system. Es hatte nichts zu tun mit fehlgeschlagenen verbindungen, oder auch ein DNS-Fehler angezeigt.