es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Odoo 14: Cómo obtener el tamaño de los archivos antes de descargarlos en Python desde hipervínculos en un sitio web.

Intento agregar información sobre el tamaño de archivo junto a los hipervínculos de mis archivos. Los archivos están en un servidor y en el sitio web tengo varios hipervínculos para descargar archivos.

Encontré una solución en Python, pero según entiendo, obtiene el tamaño de una URL específica.

import requests
# Importando el módulo requests
url = "https://speed.hetzner.de/100MB.bin"
# Solo una URL de archivo ficticia
info = requests.head(url)
# Obteniendo información del encabezado
print(info.headers)
# Imprimiendo los detalles

¿Cómo puedo cambiar esto para que automáticamente todos los hipervínculos obtengan el tamaño del archivo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener automáticamente el tamaño de archivo de todos los hipervínculos en tu sitio web, puedes seguir los siguientes pasos:

    1. Itera a través de todas las etiquetas de hipervínculos en tu sitio web utilizando una librería de Python como Beautiful Soup.
    2. Para cada etiqueta de hipervínculo, extrae el atributo URL.

    3. Utiliza la librería requests para enviar una petición HEAD a la URL extraída.

    4. Extrae la cabecera Content-Length del objeto de respuesta.

    5. Agrega la información del tamaño del archivo a la etiqueta de hipervínculo.

    Aquí tienes un ejemplo de código que implementa los pasos anteriores:

    from bs4 import BeautifulSoup
    import requests
    
    # asume que el contenido de la página HTML está almacenado en una variable llamada webpage_content
    soup = BeautifulSoup(webpage_content, 'html.parser')
    
    # itera a través de todas las etiquetas de hipervínculo en la página
    for link in soup.find_all('a'):
    
        # obtén la URL del atributo href
        url = link['href']
    
        # envía una petición HEAD a la URL y extrae la cabecera Content-Length
        response = requests.head(url)
        size = response.headers.get('Content-Length')
    
        # agrega la información del tamaño del archivo a la etiqueta de hipervínculo
        if size:
            link.string += f' ({size} bytes)'
    
    # el contenido HTML actualizado está almacenado en la variable soup
    updated_webpage_content = str(soup)
    

    Nota: es posible que necesites ajustar el código según tu caso de uso específico, como manejar excepciones para enlaces rotos y formatear la información del tamaño del archivo.

Comments are closed.