使用 python 从 <script> 内的 javascript var 中提取数据
Extracting data from javascript var inside <script> with python
我是 python、BeautifulSoup 和其他人的新手,但是
我想提取网站 "script" 标签中 javascript 变量中的 json 数据。
这是我现在的代码:
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)
现在我可以使用如下格式提取数据:
<script>
var hours = [{...dataIwant...}];
<\script>
但我只想要没有 "script" 或 "var hours =" 的数据。我想在json里改成apache nifi.
我几乎已经尝试了在这里和 google 上找到的所有内容。但大多数时候,当我尝试提取变量并将其更改为 json 格式时,我会遇到 "None" 或其他错误。
因此,如果您有一些技巧可以帮助我获取 json 格式的数据,那就太好了!
谢谢!
如果 "script" 是使用 soup.find() 后的字符串
你可以使用正则表达式来获得你需要的部分。
像这样的东西可以工作。
m = re.search('var hours = (.+)[,;]{1}', script)
if m:
found = m.group(1)
参见:How to extract a substring from inside a string in Python?
我是 python、BeautifulSoup 和其他人的新手,但是 我想提取网站 "script" 标签中 javascript 变量中的 json 数据。
这是我现在的代码:
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)
现在我可以使用如下格式提取数据:
<script>
var hours = [{...dataIwant...}];
<\script>
但我只想要没有 "script" 或 "var hours =" 的数据。我想在json里改成apache nifi.
我几乎已经尝试了在这里和 google 上找到的所有内容。但大多数时候,当我尝试提取变量并将其更改为 json 格式时,我会遇到 "None" 或其他错误。
因此,如果您有一些技巧可以帮助我获取 json 格式的数据,那就太好了!
谢谢!
如果 "script" 是使用 soup.find() 后的字符串 你可以使用正则表达式来获得你需要的部分。 像这样的东西可以工作。
m = re.search('var hours = (.+)[,;]{1}', script)
if m:
found = m.group(1)
参见:How to extract a substring from inside a string in Python?