使用python从<script>中的javascript var中提取数据

scu*_*-gm 5 javascript python json apache-nifi

我是 python、BeautifulSoup 和其他新手,但我想提取 json 数据,这些数据位于网站“脚本”标签中的 javascript 变量内。

这是我现在的代码:

import re
from bs4 import BeautifulSoup
import json
import requests
url = 'myUrl'
page = requests.get(url).content
soup = BeautifulSoup(page, "html.parser")
pattern = re.compile(r"var hours = .")
script = soup.find("script",text=pattern)
print(script)
Run Code Online (Sandbox Code Playgroud)

现在我可以使用以下格式提取数据:

<script>
var hours = [{...dataIwant...}];
<\script>
Run Code Online (Sandbox Code Playgroud)

但我只想要没有“脚本”或“var hours =”的数据。我想在json中更改它并将其放入apache nifi中。

我已经尝试了几乎所有在这里和谷歌上找到的东西。但大多数情况下,当我尝试提取变量并将其更改为 json 格式时,我会遇到“无”或其他错误。

因此,如果您有一些技巧可以帮助我以 json 格式获取数据,那就太好了!

谢谢 !

小智 3

如果您使用 soup.find() 后“script”是一个字符串,您可以使用正则表达式来获取您需要的部分。像这样的东西可以工作。

m = re.search('var hours = (.+)[,;]{1}', script)
if m:
    found = m.group(1)
Run Code Online (Sandbox Code Playgroud)

请参阅:如何从Python中的字符串中提取子字符串?