¿Las solicitudes no obtendrán el texto de la página web?

Estoy tratando de obtener el valor de VIX de una página web.

El código que estoy usando:

raw_page = requests.get("https://www.nseindia.com/live_market/dynaContent/live_watch/vix_home_page.htm").text soup = BeautifulSoup(raw_page, "lxml") vix = soup.find("span",{"id":"vixIdxData"}) print(vix.text) 

Esto me da:

Si veo vix,

 /span> 

En el sitio el elemento tiene texto,

 15.785/span> 

El valor de 15.785 es lo que quiero obtener mediante el uso de solicitudes.

Los datos que está buscando no están disponibles en la fuente de la página. Y requests.get(...) obtiene solo la fuente de la página sin los elementos que se agregan dinámicamente a través de JavaScript. Pero, todavía puede obtenerlo mediante el módulo de requests .

En la pestaña Red, dentro de las herramientas del desarrollador, puede ver un archivo llamado VixDetails.json . Se está enviando una solicitud a https://www.nseindia.com/live_market/dynaContent/live_watch/VixDetails.json , que devuelve los datos en forma de JSON.

introduzca la descripción de la imagen aquí

Puede acceder a él utilizando la función .json() incorporada del módulo de requests .

 r = requests.get('https://www.nseindia.com/live_market/dynaContent/live_watch/VixDetails.json') data = r.json() vix_price = data['currentVixSnapShot'][0]['CURRENT_PRICE'] print(vix_price) # 15.7000 

Cuando abre la página en un navegador web, el texto getIndiaVixData.js inserta el texto (por ejemplo, 15.785) en el elemento span .

Cuando obtiene la página utilizando requests en Python, solo se recupera el código HTML y no se realiza ningún procesamiento de JavaScript. Por lo tanto, el elemento span permanece vacío.

Es imposible obtener esos datos analizando únicamente el código HTML de la página mediante requests .