Obtener datos de una URL en Python

Vaibhav Vaibhav 10 octubre 2023
Obtener datos de una URL en Python

Una URL o un localizador uniforme de recursos es una dirección web válida y única que apunta a algún recurso en Internet. Este recurso puede ser un archivo de texto simple, un archivo zip, un archivo exe, un video, una imagen o una página web.

En el caso de una página web, se recupera el contenido HTML o del lenguaje de marcado de hipertexto. Este artículo mostrará cómo obtener estos datos de HTML o lenguaje de marcado de hipertexto de una URL usando Python.

Obtener datos de una URL usando el módulo requests en Python

Python tiene un módulo de requests que envía fácilmente solicitudes HTTP (Protocolo de transferencia de hipertexto). Este módulo se puede utilizar para obtener el contenido HTML o cualquier contenido de una URL válida.

El módulo requests tiene un método get() que podemos usar para obtener datos de una URL. Este método acepta una url como argumento y devuelve un objeto request.Response.

Este objeto request.Response contiene detalles sobre la respuesta del servidor a la solicitud HTTP enviada. Si se pasa una URL no válida a este método get(), el método get() lanzará una excepción ConnectionError.

Si no está seguro de la validez de la URL, se recomienda encarecidamente utilizar los bloques try y except. Simplemente encierre la llamada al método get() dentro de un bloque try y except. Esto se describirá en el próximo ejemplo.

Ahora, entendamos cómo usar esta función para obtener contenido HTML o cualquier dato de una URL válida. Consulte el siguiente código para el mismo.

Para obtener más información sobre el objeto request.Response, consulte la documentación oficial aquí.

import requests

try:
    url = "https://www.lipsum.com/feed/html"
    r = requests.get(url)
    print("HTML:\n", r.text)
except:
    print(
        "Invalid URL or some error occured while making the GET request to the specified URL"
    )

Producción :

HTML:
...

Tenga en cuenta que ... representa el contenido HTML que se obtuvo de la URL. El contenido HTML no se ha mostrado en el resultado anterior porque era demasiado grande.

Si la URL es defectuosa, el código anterior ejecutará el código dentro del bloque except. El siguiente código describe cómo funciona.

import requests

try:
    url = "https://www.thisisafaultyurl.com/faulty/url/"
    r = requests.get(url)
    print("HTML:\n", r.text)
except:
    print(
        "Invalid URL or some error occured while making the GET request to the specified URL"
    )

Producción :

Invalid URL or some error occurred while making the GET request to the specified URL

Algunas páginas web no permiten que las solicitudes GET obtengan su contenido por motivos de seguridad. En tales casos, podemos utilizar el método post() del módulo requests.

Como sugiere el nombre, este método envía solicitudes POST a una URL válida. Este método acepta dos argumentos, a saber, url y data.

La url es la URL de destino y los data aceptan un diccionario de detalles del encabezado en forma de pares clave-valor. Los detalles del encabezado pueden ser una API o una clave de interfaz de programación de aplicaciones, un token CSRF o de falsificación de solicitudes entre sitios, etc.

El código de Python para tal caso sería el siguiente.

import requests

try:
    url = "https://www.thisisaurl.com/that/accepts/post/requests/"
    payload = {
        "api-key": "my-api-key",
        # more key-value pairs
    }
    r = requests.post(url, data=payload)
    print("HTML:\n", r.text)
except:
    print(
        "Invalid URL or some error occured while making the POST request to the specified URL"
    )
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python URL