Как очистить значение динамической переменной Javascript с помощью BeautifulSoup и запросов

#javascript #python #beautifulsoup

#javascript #python #beautifulsoup

Вопрос:

Я очищаю страницу входа в систему, мне нужна только переменная VAR SALT= в ТЕГЕ JAVASCRIPT. Это веб-сайт = https://ib.muamalatbank.com/ib-app/loginpage

Когда я прочитаю все ответы здесь, используя BeautifulSoup и запросы, я могу получить эти 2 переменные (возможно, потому, что они статические): var muserid= ‘Идентификатор пользователя должен быть заполнен’; var mpassword= ‘Пароль должен быть заполнен’;

Но когда я пытаюсь очистить эту переменную SALT= , она выдает мне все значения переменной. Мой результирующий код на python

Мне просто нужно это значение VAR SALT только без кавычек Здесь ЗНАЧЕНИЕ PIC = Source VAR SALT

Я уже использую re.search и re.compile, re.findall, но я новичок, продолжаю выдавать мне сообщение об ошибке «Объект не может содержать строку ….»

 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)

  

Примечание: 1) мне нужна помощь, но я не заинтересован в использовании Selenium,

  1. У меня есть скрипт на PHP-Laravel, он полностью рабочий (мне нужен на Python), но я не разбираюсь в laravel, любой может спросить меня, я дам код Laravel

Пожалуйста, помогите мне, большое вам спасибо

Ответ №1:

Попробуйте использовать re.compile и добавьте '' в свое регулярное выражение, затем извлеките первый результат. Не тестировался с ответом страницы. Сначала убедитесь, что строка действительно присутствует в ответе.

 p = re.compile(r"var salt='(.*?)'")
res = p.findall(s.get(URL, headers=HEADERS, timeout=5, verify=False).text)[0]
print(res)
  

Комментарии:

1. Не работает, брат. Можете ли вы дать мне полный код? Спасибо

2. что происходит?