Python - leer url

 
Vista:
sin imagen de perfil

leer url

Publicado por Ariel (1 intervención) el 21/07/2022 00:17:08
Buenas tardes,
Me están solicitando leer una url de este tipo y tomar el hashrate
https://eth.crazypool.org/#/account/0x732c1d389edbc8e8c9c542dcd159d837a88c1daf

intente hacerlo mediante requests.read(url) pero no me esta dejando no veo que este ese dato.
Como tendria que hacer para leer este dato.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

leer url

Publicado por Costero (92 intervenciones) el 22/07/2022 05:16:22
El dato no esta por que esa parte de la web es creada dinamicante por JavaScript. O sea simplemente leyendo el source page no lo vas a ver.

Un truco que puedes hacer es utilizando la libreria Selenium que corre to browser y puedes entonces obtener el valor (en este caso estoy usando my Firefox browser):

https://selenium-python.readthedocs.io/installation.html

Y aqui el codigo que toma los valores:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from selenium import webdriver
from selenium.webdriver.common.by import By
import sys
import time
from selenium.webdriver.firefox.options import Options as FirefoxOptions
 
# selenium documentation ...
 
# pip install selenium
 
# download the driver that correspond to your browser ...
 
# print executable paths ...
print(sys.executable)
 
options = FirefoxOptions()
options.headless = True
driver = webdriver.Firefox(executable_path='./drivers/geckodriver', options=options)
 
try:
    driver.get("https://eth.crazypool.org/#/account/0x732c1d389edbc8e8c9c542dcd159d837a88c1daf")
 
    # wait for javascript to finish rendering the page ...
    time.sleep(5)
 
    assert "ETH Mining" in driver.title
 
    elements = driver.find_elements(By.CLASS_NAME, "mb-0")
 
    print_next = False
 
    for element in elements:
        if print_next:
            print_next = False
            print("==> " + element.text)
        if 'Hashrate' in element.text:
            print_next = True
            print("==> " + element.text)
 
finally:
    driver.close()

Y el resultado de correr el programa:


1
2
3
4
==> Hashrate (1h)
==> 85.90 MH
==> Hashrate (6h)
==> 92.85 MH
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar