Cómo extraer el valor de JavaScript variable dinámica usando BeautifulSoup y Requests
Estoy raspando la página de inicio de sesión, solo necesito VAR SALT = variable en JAVASCRIPT TAG. Este es el sitio web =https://ib.muamalatbank.com/ib-app/loginpage
Cuando leo todas las respuestas aquí, usando BeautifulSoup y las solicitudes, puedo obtener estas 2 variables (tal vez porque es estática): var muserid = 'Se debe completar la ID de usuario'; var mpassword = 'La contraseña debe ser completada';
Pero cuando intento Scrape this var SALT =, me da todo el valor VAR. Mi código de resultado en Python
Solo necesito este valor VAR SALT solo sin comillas Aquí el PIC = Fuente VAR SALT VALUE
Ya estoy usando re.search, y re.compile, re.findall, pero soy un novato, keep me da el error "Object can't string ...."
from bs4 import BeautifulSoup as bs
import requests
import re
import lxml
import json
URL = 'https://ib.muamalatbank.com/ib-app/loginpage'
REF = 'https://ib.muamalatbank.com'
HEADERS = {'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0', 'origin': URL, 'referer': REF}
s = requests.session()
soup = bs(s.get(URL, headers=HEADERS, timeout=5, verify=False).text,"html.parser")
script = soup.find_all("script")[11]
ambilteks = soup.find_all(text=re.compile("salt=(.*?)"))
print(ambilteks)
Nota: 1) necesito ayuda pero no estoy interesado en usar Selenium,
- Tengo un script en PHP-Laravel, está funcionando completamente (lo necesito en Python), pero no tengo conocimiento en laravel, cualquiera puede preguntarme, le daré el código de Laravel
Por favor ayúdame muchas gracias
Respuestas
Intente usar re.compile y agregue el ''en su expresión regular, luego extraiga el primer resultado. No probado con respuesta de página. Primero verifique que la cadena esté realmente presente en la respuesta.
p = re.compile(r"var salt='(.*?)'")
res = p.findall(s.get(URL, headers=HEADERS, timeout=5, verify=False).text)[0]
print(res)