Ich versuche, den Inhalt von App Store> Business abzurufen :
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 das range
mit versuche (0,2)
, funktioniert es, aber wenn ich das range
in 100
s setze , zeigt es diesen Fehler:
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)
python
python-requests
user3446000
quelle
quelle
i
irgendwo in der eine Variable verwendenfor
?itunes.apple.com
. Können Siedig itunes.apple.com
an Ihrer Kommandozeile laufen und die Ergebnisse hier veröffentlichen?Antworten:
Was hier passiert ist, ist, dass der iTunes Server Ihre Verbindung ablehnt (Sie senden in kurzer Zeit zu viele Anfragen von derselben IP-Adresse).
Die Fehlersuche ist irreführend und sollte etwa "Es konnte keine Verbindung hergestellt werden, da der Zielcomputer sie aktiv abgelehnt hat" lauten .
Es gibt ein Problem bei etwa python.requests lib bei Github. Überprüfen Sie es hier
Um dieses Problem zu beheben (weniger ein Problem als vielmehr eine irreführende Debug-Ablaufverfolgung), sollten Sie verbindungsbezogene Ausnahmen wie die folgenden abfangen:
Eine andere Möglichkeit, dieses Problem zu beheben, besteht darin, dass Sie eine ausreichende Zeitlücke zum Senden von Anforderungen an den Server verwenden. Dies kann durch die
sleep(timeinsec)
Funktion in Python erreicht werden (vergessen Sie nicht, den Ruhezustand zu importieren).Alles in allem ist Anfragen fantastisch Python Lib, hoffe, das löst Ihr Problem.
quelle
(Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)
Teil angegeben. "gai" steht fürgetaddrinfo
und der wahrscheinliche Fehler ist: EAI_NONAME Der Knoten oder Dienst ist nicht bekannt; oder sowohl Knoten als auch Dienst sind NULL; oder AI_NUMERICSERV wurde in hints.ai_flags angegeben und service war keine numerische Portnummernzeichenfolge. Es sah wahrscheinlich so aus, als hätte der Schlaf das Problem behoben, aber Sie haben wahrscheinlich nur ein vorübergehendes DNS-Resolver-Problem durchgeschlafen.Verwenden Sie einfach
requests'
Funktionen:Dies wird
GET
die URL und versuchen 3 Mal im Fall vonrequests.exceptions.ConnectionError
.backoff_factor
Dies hilft dabei, Verzögerungen zwischen den Versuchen anzuwenden, um zu vermeiden, dass bei einem regelmäßigen Anforderungskontingent erneut ein Fehler auftritt.Schauen Sie sich an
requests.packages.urllib3.util.retry.Retry
, es gibt viele Möglichkeiten, um Wiederholungsversuche zu vereinfachen.quelle
python manage.py shell
und wird verwendetsession.get('http://localhost:8000/api/')
. Irgendeine Hilfe? @ Zuludev-server
und es zuerst am Laufen zu halten.Tu das einfach,
Fügen Sie anstelle von den folgenden Code ein
page = requests.get(url)
:Bitte :)
quelle
import time
requests
hat seinen eigenen Code, um seinen Fehler zu behandeln und erneut zu versuchenexcept: ...
) vonrequests
undsleep()
als Antwort abzufangen. Stattdessen sollten sie abfangenrequests.exceptions.ConnectionError
undsleep()
nur, wenn diese Ausnahme auftritt. (Oder noch besser, verwenden Sie einfach die mitgelieferte integrierteRetry()
Klasserequests
, wie von @Zulu vorgeschlagen).pip install pyopenssl
schien es für mich zu lösen.https://github.com/requests/requests/issues/4246
quelle
Ich habe ein ähnliches Problem, aber der folgende Code hat bei mir funktioniert.
"verify = False" deaktiviert die SSL-Überprüfung. Try and Catch kann wie gewohnt hinzugefügt werden.
quelle
Es ist immer gut, die Ausnahmebehandlung zu implementieren. Dies hilft nicht nur, ein unerwartetes Beenden des Skripts zu vermeiden, sondern kann auch helfen, Fehler und Info-Benachrichtigungen zu protokollieren. Wenn ich Python-Anfragen verwende, bevorzuge ich Ausnahmen wie diese:
Hier ist erneuerIPadress () eine benutzerdefinierte Funktion, die die IP-Adresse ändern kann, wenn sie blockiert wird. Sie können auf diese Funktion verzichten.
quelle
ip-adrress
in Python ändert , wissen Sie etwas darüber, dann lassen Sie es mich wissenDie Angabe des Proxys in einer Unternehmensumgebung hat das Problem für mich gelöst.
Der vollständige Fehler ist:
quelle
Ich war nicht in der Lage, es unter Windows zum Laufen zu bringen, selbst nachdem ich pyopenssl installiert und verschiedene Python-Versionen ausprobiert hatte (während es auf dem Mac gut funktionierte), also wechselte ich zu urllib und es funktionierte unter Python 3.6 (von Python .org) und 3.7 (Anaconda) )
quelle
Beim Schreiben eines Selenium-Browser-
driver.quit()
Testskripts ist dieser Fehler beim Aufrufen vor der Verwendung eines JS-API-Aufrufs aufgetreten. Denken Sie daran, dass das Beenden des Web-Treibers das letzte ist, was zu tun ist!quelle
Hinzufügen meiner eigenen Erfahrung für diejenigen, die dies in Zukunft erleben. Mein spezifischer Fehler war
Es stellt sich heraus, dass dies tatsächlich daran lag, dass ich die maximale Anzahl geöffneter Dateien auf meinem System erreicht hatte. Es hatte nichts mit fehlgeschlagenen Verbindungen oder sogar einem DNS-Fehler wie angegeben zu tun.
quelle
Meine eigene Erfahrung hinzufügen:
als ich versuchte, eine in der URL angegebene Datei herunterzuladen.
Der Fehler war
Ich habe es korrigiert, indem ich
verify = False
die Funktion wie folgt hinzugefügt habe :quelle
Fügen Sie Header für diese Anforderung hinzu.
quelle