在Python中使用漂亮的Soup从HTML中获取JavaScript变量

2024-10-02 00:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个“GET”请求后抓取一个网站的HTML。我基本上是想从网站上得到一些代币。我使用beautifulsoup,因为这是我通常使用的,但我似乎不知道如何从html中获取javascript变量。标记在HTML中如下所示:

<script type="text/javascript">
var accessToken = "WaX2wWBb9fkp+qVQf6ECq9JcOZJnCL3Y/furfevohpk=";
var ivString = "d2c5708bbcc6b53c23af6d2cdab9f4ab";
var encryptedFpAccountId = "zk/5H7Iz0cNQPxPadMgvDw==";
var accessTokenCode = "0";
var nextPageName="signup-retail"

我需要获取accessToken、ivString和encryptedFpAccountId的值。我该怎么做?在


Tags: text标记get网站varhtmltypescript
1条回答
网友
1楼 · 发布于 2024-10-02 00:27:01

使用Regex获取所需的变量。在

演示:

from bs4 import BeautifulSoup
import re
s = """<script type="text/javascript">
var accessToken = "WaX2wWBb9fkp+qVQf6ECq9JcOZJnCL3Y/furfevohpk=";
var ivString = "d2c5708bbcc6b53c23af6d2cdab9f4ab";
var encryptedFpAccountId = "zk/5H7Iz0cNQPxPadMgvDw==";
var accessTokenCode = "0";
var nextPageName="signup-retail
</script>"""

soup = BeautifulSoup(s, "html.parser")
script = soup.find("script")
accessToken = re.search('var accessToken = (?P<token>.*);', script.string)
if accessToken:
    print(accessToken.group('token'))
ivString = re.search('var ivString = (?P<ivString>.*);', script.string)
if ivString:
    print(ivString.group('ivString'))

encryptedFpAccountId = re.search('var encryptedFpAccountId = (?P<encryptedFpAccountId>.*);', script.string)
if encryptedFpAccountId:
    print(encryptedFpAccountId.group('encryptedFpAccountId'))

输出:

^{pr2}$

相关问题 更多 >

    热门问题