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.

Encuentre etiquetas en función de un valor de atributo con el número más alto.

Estoy tratando de encontrar una manera de encontrar la etiqueta <span> con el número más alto en el valor del atributo data-resolution.

Esto es lo que he logrado hacer hasta ahora.

from bs4 import BeautifulSoup

html_doc = """
<span data-type="video-src" data-url="https://1080.com" data-resolution="1080"></span>
<span data-type="video-src" data-url="https://720.com" data-resolution="720"></span>
<span data-type="video-src" data-url="https://480.com" data-resolution="480"></span>
<span data-type="video-src" data-url="https://360.com" data-resolution="360"></span>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

x = soup.select('span[data-resolution="1080"]')
print(x)

El problema aquí es que 1080 es un valor fijo. Supongo que podría crear una declaración condicional if con todos los números que supongo estarán disponibles, pero preferiría simplemente seleccionar el número más alto.

Entonces, ¿cómo puedo hacer que Beautiful Soup busque la etiqueta <span> con el número más alto en el valor del atributo data-resolution?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para encontrar la etiqueta <span> con el número más alto en el valor del atributo data-resolution, puedes usar la función max() y una función lambda para extraer los enteros de los atributos data-resolution.

    Aquí tienes un ejemplo de código para lograr esto:

    from bs4 import BeautifulSoup
    
    html_doc = """
    <span data-type="video-src" data-url="https://1080.com" data-resolution="1080"></span>
    <span data-type="video-src" data-url="https://720.com" data-resolution="720"></span>
    <span data-type="video-src" data-url="https://480.com" data-resolution="480"></span>
    <span data-type="video-src" data-url="https://360.com" data-resolution="360"></span>
    """
    
    soup = BeautifulSoup(html_doc, 'html.parser')
    
    max_span = max(soup.find_all('span'), key=lambda span: int(span['data-resolution']))
    
    print(max_span)
    

    Este código imprimirá la etiqueta <span> con el valor más alto en el atributo data-resolution (en este caso, la primera etiqueta <span>):

    <span data-type="video-src" data-url="https://1080.com" data-resolution="1080"></span>
    

    Al utilizar la función max() y una función lambda para extraer los enteros de los atributos data-resolution, este código asegura que funcionará para cualquier conjunto de etiquetas <span> con atributos data-resolution que contengan enteros.

Comments are closed.