【问题标题】:Extract token from within <script> tags BeautifulSoup4, Requests从 <script> 标签 BeautifulSoup4, Requests 中提取令牌
【发布时间】:2021-04-22 05:20:40
【问题描述】:

我正在尝试将 securityToken 与 HTML 响应隔离开来。 securityToken 虽然在标签内。

我已经能够使用以下代码隔离标签:

import requests
from bs4 import BeautifulSoup
import re

url = 'https://obe.sandals.com/read-land-availability/'
r = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"})
soup= BeautifulSoup(r.text, 'html.parser')
mytext = soup.find('script', text = re.compile('securityToken:'))

print(mytext)

这是输出,但我无法弄清楚提取 securityToken 的最后一步

<script> window._app.page = { jsView: './views/step1/Vacation', securityToken: "BF8394B1DD5481AF43BE2AF02243903F121D26327E83ADC13785F6EF739B5870", subSessionId: "6D71C585C7F51CF105B3100A473635ACF3637329F2C1ABAADB1F2827832562D8", step: 1 }; </script>

Process finished with exit code 0

【问题讨论】:

标签: python beautifulsoup python-requests html-parsing python-3.9


【解决方案1】:

要提取securityToken 的值,请尝试以下操作:

import re
import requests
from bs4 import BeautifulSoup


url = 'https://obe.sandals.com/read-land-availability/'
r = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"})
soup = BeautifulSoup(r.text, 'html.parser')
mytext = soup.find('script', text = re.compile('securityToken:'))


print(re.search(r'securityToken: "(.*?)"', str(mytext)).group(1))

输出:

5EFDCE1D62C5F1C1369EF3629F921B0F90301ACB51C5FD24321D7FB58D04DE50

【讨论】:

  • 成功了!我不认为以这种方式构建搜索。谢谢!! @MendelG
【解决方案2】:

如果你使用'html5lib'而不是'html.parser',并且安全令牌的位置总是相同的:

mytext.split('securityToken: "')[1].split('", subSessionId:')[0]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多