¿Cuál es la forma más rápida de HTTP GET en Python si sé que el contenido será una cadena? Estoy buscando en la documentación una línea rápida como:
contents = url.get("http://example.com/foo/bar")
Pero todo lo que puedo encontrar usando Google son httpliby urllib, y no puedo encontrar un acceso directo en esas bibliotecas.
¿Python 2.5 estándar tiene un acceso directo en alguna forma como se indicó anteriormente, o debería escribir una función url_get?
- Preferiría no capturar la salida del bombardeo hacia
wgetocurl.
python
http
networking
Frank Krueger
fuente
fuente

Respuestas:
Python 3:
Python 2:
Documentación para
urllib.requestyread.fuente
closedespuésread. ¿Es eso necesario?read. Pero unwithbloqueo sería más claro y seguro para Jython, etc.requestsfunciona bienr = urllib2.urlopen("http://blah.com/blah")y luegotext = r.read(). Es sincronización, solo espera el resultado en "texto".Podría usar una biblioteca llamada solicitudes .
Esto es bastante facil. Entonces puedes hacer esto:
fuente
pip install). Para las bibliotecas no puras, hay un paso adicional: necesitapip installla biblioteca en una instancia de AWS Linux (la misma variante de sistema operativo con la que se ejecutan las lambdas), luego copie esos archivos para tener compatibilidad binaria con AWS Linux. Las únicas bibliotecas que no siempre podrá usar en Lambda son aquellas con distribuciones binarias solamente, que afortunadamente son bastante raras.pip install requests.from botocore.vendored import requestsUsoresponse = requests.get('...')Si desea que la solución con httplib2 sea única, considere crear instancias de un objeto Http anónimo
fuente
Eche un vistazo a httplib2 , que, junto a muchas funciones muy útiles, proporciona exactamente lo que desea.
Donde el contenido sería el cuerpo de respuesta (como una cadena), y resp contendría los encabezados de estado y respuesta.
Sin embargo, no viene incluido con una instalación estándar de Python (pero solo requiere Python estándar), pero definitivamente vale la pena echarle un vistazo.
fuente
Es bastante simple con el poderoso
urllib3biblioteca.Importarlo así:
Y haga una solicitud como esta:
También puedes agregar encabezados:
Se puede encontrar más información en la documentación de urllib3 .
urllib3es mucho más seguro y fácil de usar que el integradourllib.requesto loshttpmódulos y es estable.fuente
La solución de theller para wget es realmente útil, sin embargo, descubrí que no imprime el progreso durante el proceso de descarga. Es perfecto si agrega una línea después de la declaración de impresión en reporthook.
fuente
Aquí hay un script wget en Python:
fuente
Sin más importaciones necesarias, esta solución funciona (para mí), también con https:
A menudo tengo dificultades para obtener el contenido cuando no especifico un "Agente de usuario" en la información del encabezado. Luego, generalmente, las solicitudes se cancelan con algo como:
urllib2.HTTPError: HTTP Error 403: Forbiddenourllib.error.HTTPError: HTTP Error 403: Forbidden.fuente
Cómo enviar también encabezados
Python 3:
Python 2:
fuente
Si está trabajando específicamente con las API HTTP, también hay opciones más convenientes, como Nap .
Por ejemplo, aquí le mostramos cómo obtener lo esencial de Github desde el 1 de mayo de 2014 :
Más ejemplos: https://github.com/kimmobrunfeldt/nap#examples
fuente
Excelentes soluciones Xuan, Theller.
Para que funcione con Python 3, realice los siguientes cambios
Además, la URL que ingrese debe ir precedida de un "http: //", de lo contrario, devolverá un error de tipo de URL desconocido.
fuente
Para
python >= 3.6, puedes usar dload :Para
json:Instalar en pc:
pip install dloadfuente
En realidad, en Python podemos leer desde urls como desde archivos, aquí hay un ejemplo para leer json desde API.
fuente
Si quieres una API de nivel inferior:
fuente