Estoy tratando de obtener el contenido de App Store> Negocios :
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)
Cuando trato de la range
con (0,2)
que funciona, pero cuando pongo el range
de 100
s que muestra este error:
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
usuario3446000
fuente
fuente
i
variable en algún lugar delfor
?itunes.apple.com
. ¿Puedes correrdig itunes.apple.com
en tu línea de comando y publicar los resultados aquí?Respuestas:
Lo que sucedió aquí es que el servidor de iTunes rechaza su conexión (está enviando demasiadas solicitudes desde la misma dirección IP en un corto período de tiempo)
el rastreo de error es engañoso, debería ser algo así como "No se pudo establecer conexión porque la máquina de destino lo rechazó activamente" .
Hay un problema en python.requests lib en Github, échale un vistazo aquí
Para superar este problema (no tanto un problema como un seguimiento de depuración engañoso), debe detectar excepciones relacionadas con la conexión de esta manera:
Otra forma de superar este problema es que si usa el intervalo de tiempo suficiente para enviar solicitudes al servidor, esto se puede lograr mediante la
sleep(timeinsec)
función en Python (no olvide importar el modo de suspensión)En general, todas las solicitudes son una increíble lib python, espero que resuelva su problema.
fuente
(Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)
parte. "gai" significagetaddrinfo
, y el probable error relacionado es: EAI_NONAME El nodo o servicio no se conoce; o tanto el nodo como el servicio son NULL; o AI_NUMERICSERV se especificó en hints.ai_flags y el servicio no era una cadena numérica de número de puerto. Probablemente parecía que el sueño lo solucionó, pero probablemente solo dormiste a través de un problema transitorio de resolución de DNS.Solo use las
requests'
funciones:Esta será
GET
la URL y volverá a intentarlo 3 veces en caso derequests.exceptions.ConnectionError
.backoff_factor
ayudará a aplicar demoras entre los intentos para evitar fallar nuevamente en caso de una cuota de solicitud periódicaEcha un vistazo a
requests.packages.urllib3.util.retry.Retry
, tiene muchas opciones para simplificar los reintentos.fuente
python manage.py shell
y estoy usandosession.get('http://localhost:8000/api/')
. ¿Alguna ayuda? @Zuludev-server
y mantenerlo funcionando primero.Solo haz esto
Pegue el siguiente código en lugar de
page = requests.get(url)
:De nada :)
fuente
import time
requests
tiene su propio código para manejar su error y volver a intentarloexcept: ...
) derequests
ysleep()
en respuesta. En cambio, deberían atraparrequests.exceptions.ConnectionError
ysleep()
solo si se produce esa excepción. (O mejor aún, solo use laRetry()
clase integrada que viene conrequests
, como lo sugiere @Zulu).pip install pyopenssl
Pareció resolverlo por mí.https://github.com/requests/requests/issues/4246
fuente
Tengo un problema similar pero el siguiente código funcionó para mí.
"verificar = falso" deshabilita la verificación SSL. Intentar y atrapar se puede agregar como de costumbre.
fuente
Siempre es bueno implementar el manejo de excepciones. No solo ayuda a evitar la salida inesperada del script, sino que también puede ayudar a registrar errores y notificaciones de información. Cuando uso solicitudes de Python, prefiero detectar excepciones como esta:
AquínewIPadress () es una función definida por el usuario que puede cambiar la dirección IP si se bloquea. Puedes ir sin esta función.
fuente
ip-adrress
en Python, ¿sabe algo al respecto y luego hágamelo saberEspecificar el proxy en un entorno corporativo lo resolvió para mí.
El error completo es:
fuente
No pude hacerlo funcionar en Windows incluso después de instalar pyopenssl y probar varias versiones de Python (mientras funcionaba bien en Mac), así que cambié a Urllib y funciona en Python 3.6 (de Python .org) y 3.7 (anaconda )
fuente
Cuando estaba escribiendo un script de prueba de navegador de selenio, me encontré con este error al llamar
driver.quit()
antes de usar una llamada de API JS. ¡Recuerde que salir de webdriver es lo último que debe hacer!fuente
Agregando mi propia experiencia para aquellos que están experimentando esto en el futuro. Mi error específico fue
Resulta que esto fue realmente porque había alcanzado el número máximo de archivos abiertos en mi sistema. No tenía nada que ver con conexiones fallidas, o incluso un error de DNS como se indica.
fuente
Agregando mi propia experiencia:
cuando intenté descargar un archivo especificado en la url.
El error fue
Lo corregí agregando
verify = False
la función de la siguiente manera:fuente
Verifica tu conexión de red. Tenía esto y la máquina virtual no tenía una conexión de red adecuada.
fuente
Agregue encabezados para esta solicitud.
fuente