使用 Python 中的 BeautifulSoup 从脚本标签 [HTML] 中提取数据

Extract data from script tag [HTML] using BeautifulSoup in Python

我想从脚本中的变量中提取数据:

<script>
var Itemlist = 'null';
var ItemData = '[{\"item_id\":\"107\",\"id\":\"79\",\"line_item_no\":\"1\",\"Amount\":\"99999.00\"}]';
</script>

我想要 item_id 和 python

中的变量内部的金额

我尝试使用正则表达式它工作了一段时间但是当 cookies 会话更新时它停止工作

还有其他方法可以获取这些值吗?

我正在使用此方法从 html 获取脚本,但它会在 cookie 会话更新时发生变化

soup = bs(response.content, 'html.parser')
script = soup.find('script')[8]

所以我必须更改我放在 ('script') 之后的数字,现在是 [8] 如果 cookie 会话更新,我必须不断更改数字,直到找到我正在寻找的脚本对于

要从 <script> 中获取数据,您可以使用此示例:

import re
import json
from bs4 import BeautifulSoup

html_data = """
<script>
var Itemlist = 'null';
var ItemData = '[{\"item_id\":\"107\",\"id\":\"79\",\"line_item_no\":\"1\",\"Amount\":\"99999.00\"}]';
</script>
"""

soup = BeautifulSoup(html_data, "html.parser")
data = soup.select_one("script").text
data = re.search(r"ItemData = '(.*)';", data).group(1)
data = json.loads(data)

print("Item_id =", data[0]["item_id"], "Amount =", data[0]["Amount"])

打印:

Item_id = 107 Amount = 99999.00