gpt4 book ai didi

python - 在 Python 中使用 BeautifulSoup 从 HTML Script 标签中提取 JSON

转载 作者:可可西里 更新时间:2023-11-01 13:19:19 26 4
gpt4 key购买 nike

我有以下 HTML,我应该如何从变量中提取 JSON:window.__INITIAL_STATE__

<!DOCTYPE doctype html>

<html lang="en">
<script>
window.sessConf = "-2912474957111138742";
/* <sl:translate_json> */
window.__INITIAL_STATE__ = { /* Target JSON here with 12 million characters */};
/* </sl:translate_json> */
</script>
</html>

最佳答案

您可以使用以下 Python 代码提取 JavaScript 代码。

soup = BeautifulSoup(html)
s=soup.find('script')
js = 'window = {};\n'+s.text.strip()+';\nprocess.stdout.write(JSON.stringify(window.__INITIAL_STATE__));'
with open('temp.js','w') as f:
f.write(js)

JS 代码将写入文件“temp.js”。然后就可以调用node来执行JS文件了。

from subprocess import check_output
window_init_state = check_output(['node','temp.js'])

python 变量 window_init_state 包含 JS 对象 window.__INITIAL_STATE__ 的 JSON 字符串,您可以使用 JSONDecoder 在 python 中解析它。

例子

from subprocess import check_output
import json, bs4
html='''<!DOCTYPE doctype html>

<html lang="en">
<script> window.sessConf = "-2912474957111138742";
/* <sl:translate_json> */
window.__INITIAL_STATE__ = { 'Hello':'World'};
/* </sl:translate_json> */
</script>
</html>'''
soup = bs4.BeautifulSoup(html)
with open('temp.js','w') as f:
f.write('window = {};\n'+
soup.find('script').text.strip()+
';\nprocess.stdout.write(JSON.stringify(window.__INITIAL_STATE__));')
window_init_state = check_output(['node','temp.js'])
print(json.loads(window_init_state))

输出:

{'Hello': 'World'}

关于python - 在 Python 中使用 BeautifulSoup 从 HTML Script 标签中提取 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com