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.

¿Existe alguna forma de extraer una lista de un documento javascript?

Hay un sitio web donde necesito obtener los propietarios de este elemento de un ítem de juego en línea y a través de la investigación, necesito hacer un “web scraping” para obtener estos datos. Pero, la información se encuentra en un documento/código de Javascript, no en un documento HTML fácil de analizar como bs4 muestra que puedo extraer información fácilmente. Entonces, necesito obtener una variable en este documento de Javascript (que contiene una lista de propietarios del elemento que estoy viendo) y convertirla en una lista/json/cadena utilizable que pueda implementar en mi programa. ¿Hay alguna forma de hacer esto? Si es así, ¿cómo puedo hacerlo?

He adjuntado una imagen de la variable que necesito al ver el código fuente de la página en la que estoy.

Mi código actual:
py
from bs4 import BeautifulSoup
html = requests.get('https://www.rolimons.com/item/1029025').content #la página web del elemento
soup = BeautifulSoup(html, "lxml")
datas = soup.find_all("script")
print(datas) #imprime las secciones del contenido del sitio web que tienen javascript

ENLACE DE LA IMAGEN

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de extraer los datos que necesitas del documento/código de Javascript. Puedes usar una biblioteca como json o re para extraer la parte relevante del código de Javascript y convertirla en una lista/json/cadena utilizable.

    Suponiendo que la variable que contiene la lista de propietarios se llama ownersList, puedes hacer algo como lo siguiente para extraerla del código de Javascript:

    import re
    import json
    
    # ...
    
    # Extraer la variable ownersList del código Javascript
    patrón = r"var ownersList = (\[.*\]);"
    coincidencia = re.search(patrón, html.decode())
    if coincidencia:
        propietarios = json.loads(coincidencia.group(1))
        print(propietarios)
    

    Aquí, utilizamos el módulo re para buscar un patrón que coincida con la declaración var ownersList = [...] en el código de Javascript. Luego, extraemos el contenido de los corchetes utilizando un grupo de captura ((\[.*\])). Finalmente, utilizamos el módulo json para convertir la representación en cadena de la lista (coincidencia.group(1)) en una lista real de Python.

    Una vez que tengas la lista propietarios, puedes manipularla y utilizarla en tu programa según sea necesario.

Comments are closed.