如何使用BeautifulSoup和请求刮擦动态变量Javascript值



我正在抓取登录页面,我只需要JAVASCRIPT TAG中的VAR SALT=变量。这是网站=https://ib.muamalatbank.com/ib-app/loginpage

当我在这里阅读所有答案时,使用BeautifulSoup和请求,我可以得到这2个变量(可能是因为它是静态的(:var muserid="必须填写用户ID";var mpassword="必须填写密码">

但当我尝试Scrape这个var SALT=时,它会给我所有的var值。我在python 中的结果代码

我只需要这个VAR SALT值,没有引号此处PIC=源VAR SALT VALUE

我已经使用了re.search,和re.compile,re.findall,但我是新手,keep给我错误"对象不能字符串">

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代码

请帮帮我,非常感谢

尝试使用re.compile并将''添加到正则表达式中,然后提取第一个结果。未使用页面响应进行测试。首先验证字符串是否实际存在于响应中。

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

最新更新