Estoy haciendo referencia a esta URL: https://tracker.icon.foundation/block/29562412

Si se desplaza hacia abajo hasta "Transacciones", muestra 2 transacciones con enlaces separados, eso es esencialmente lo que estoy tratando de capturar. Si intento un simple comando pd.read_csv (url), claramente omite los datos que estoy buscando, así que pensé que podría estar basado en JavaScript y probé el siguiente código en su lugar:

from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://tracker.icon.foundation/block/29562412')
r.html.links
r.html.absolute_links

Y obtengo el resultado "set ()" aunque esperaba lo siguiente:

['https://tracker.icon.

¿Es JavaScript siquiera el enfoque correcto? En su lugar, probé BeautifulSoup y tampoco encontré ningún cigarro en ese extremo.

0
hiimarksman 22 ene. 2021 a las 01:11

1 respuesta

La mejor respuesta

Tienes razón. Esta página se completa de forma asincrónica mediante JavaScript, por lo que BeautifulSoup y herramientas similares no podrán ver el contenido específico que está intentando extraer.

Sin embargo, si registra el tráfico de red de su navegador, puede ver algunas solicitudes HTTP GET (XHR) que se realizan a una API REST, que muestra sus resultados en JSON. Este JSON contiene la información que está buscando. En realidad, realiza varias solicitudes de este tipo a varios puntos finales de API, pero el que nos interesa se llama txList (abreviatura de "lista de transacciones", supongo):

def main():

    import requests

    url = "https://tracker.icon.foundation/v3/block/txList"

    params = {
        "height": "29562412",
        "page": "1",
        "count": "10"
    }

    response = requests.get(url, params=params)
    response.raise_for_status()

    base_url = "https://tracker.icon.foundation/transaction/"

    for transaction in response.json()["data"]:
        print(base_url + transaction["txHash"])

    return 0


if __name__ == "__main__":
    import sys
    sys.exit(main())

Salida:

https://tracker.icon.foundation/transaction/0x9e5927c83efaa654008667d15b0a223f806c25d4c31688c5fdf34936a075d632
https://tracker.icon.foundation/transaction/0xd64f88fe865e756ac805ca87129bc287e450bb156af4a256fa54426b0e0e6a3e
>>> 
1
Paul M. 21 ene. 2021 a las 22:21