我需要用漂亮的汤在html中获得一个特定的值



也许你们可以帮忙。我正试图在一个网站上用python beautiful汤在脚本中获得一个令牌,但有一部分我被卡住了。我提出的请求是

getpollsoup = BeautifulSoup(getpolldata, 'html.parser')
poll = getpollsoup.find_all("script")[0]
print(poll) 

响应是

(function () {
var config = {};
// Transaction details
config.transaction = {
token: "36374fb17a52c4d145a7f689d8d20f85ca9e3747acb89f95f9b592fd4a4cf757",
date: parseInt("1623792179"),
expiry: parseInt("1623792479"),
expiresIn: parseInt("299"), // "Expires in" calculated based on Server time
expiresAfter: parseInt("300"),
challengeMethod:  "delegate-sca" ,
phoneNumberTail:  null         };
// MPI data
config.mpiData = JSON.parse(atob("eyJtZCI6IjQwMjkyNzc1NDIiLCJ0ZXJtVXJsIjoiaHR0cHM6XC9cL3d3dy5zaG9wZGlzbmV5LmNvLnVrXC9vblwvZGVtYW5kd2FyZS5zdG9yZVwvU2l0ZXMtZGlzbmV5dWstU2l0ZVwvZW5fR0JcL1dvcmxkUGF5LUhhbmRsZUF1dGhlbnRpY2F0aW9uUmVzcG9uc2U/bm89NDAyOTI3NzU0MiJ9"));
// One-Time Code
config.otcVerify = "https://retry.touchtechpayments.com/api/v1/:verify";
config.otcResend = "https://retry.touchtechpayments.com/api/v1/:resend";
// Poll
config.pollUrl = "https://poll.touchtechpayments.com/poll";
// Select
config.selectUrl = "https://retry.touchtechpayments.com/api/v1/:select";
// Macs
config.macsConfirmUrl = "https://macs.touchtechpayments.com/v1/confirmTransaction";
config.macsCancelUrl = "https://macs.touchtechpayments.com/v1/cancelAuthentication";
window.ttConfig = config;
})();
</script> 

但在这种情况下我只想要令牌:令牌:";36374fb17a52c4d145a7f689d8d20f85ca9e3747acb89f95f9b592fd4a4cf757";

感谢的帮助

您可以使用正则表达式模式来查找"令牌":

import re
# ... After creating the `soup`
poll = getpollsoup.find_all("script")[0]
print(re.search(r'token: "(.*)"', str(poll)).group(1))

输出:

36374fb17a52c4d145a7f689d8d20f85ca9e3747acb89f95f9b592fd4a4cf757

您需要通过JSON进行访问,有一个选项:

import json
with open("test.json") as jsonFile:
jsonObject = json.load(jsonFile)
jsonFile.close()
tkn = jsonObject['config.transaction.token']
print(tkn)

相关内容

最新更新