首页 > 解决方案 > 使用 BeautifulSoup 查找 Javascript 变量定义

问题描述

我正在尝试在网站的 HTML(在标签中)中找到特定的变量定义,我有以下代码:

logResponse = scrape.post(url, params=logindata, headers=UA)
soup = bs(logResponse.text, 'html.parser')
x = soup.find_all('var my_post_key')
print(x)

我要查找的变量是“my_post_key”,但 soup.find_all 函数返回一个空列表 ([])。我怀疑我用错了,但我想知道如何正确地做到这一点。这是变量在页面 HTML 中的存储方式:

<script type="xxxxxxxxxxxxxxxxx-text/javascript">
var my_post_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
</script>

回顾一下,我只是想获取“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”值。任何帮助表示赞赏。

标签: pythonbeautifulsouppython-requests

解决方案


from bs4 import BeautifulSoup
import re


html = """
<script type="xxxxxxxxxxxxxxxxx-text/javascript">
var my_post_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
</script>
"""

soup = BeautifulSoup(html, 'html.parser')
target = soup.select_one("script").string


print(target.split('"')[1])

#Or

match = re.search(r'key = \"(.+?)\"', target).group(1)

print(match)

输出:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

推荐阅读