簡體   English   中英

如何使用 BeautifulSoup 和 Requests 抓取動態變量 Javascript 值

[英]How Scraping Dynamic Variable Javascript value using BeautifulSoup and Requests

我正在抓取登錄頁面,我只需要 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 = Source VAR SALT VALUE

我已經在使用 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 代碼

請幫幫我,非常感謝

嘗試使用 re.compile 並將''添加到您的正則表達式中,然后提取第一個結果。 未使用頁面響應進行測試。 首先驗證字符串是否確實存在於響應中。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM