Решение:
script = soup.find('script',id='requirejs.config').string
в script будет всё, что между
<script type="application/json" id="requirejs.config">
и
</script>
Можно так:
import json
from bs4 import BeautifulSoup
html = '''
<!DOCTYPE html>
<body>
<script type="application/json" id="requirejs.config">
{
"name": "John",
"age": 30,
"isAdmin": false,
"courses": ["html", "css", "js"],
"wife": null
}
</script>
</body>
</html>
'''
soup = BeautifulSoup(html,"html.parser")
script = soup.find('script',type="application/json")
my_json = str(script)[55:-12]
print(json.loads(my_json)['name'])
Вывод:
John
Самое интересное здесь - это строка "my_json = str(script)[55:-12]":
55 - удаляем с самого начала
<script type="application/json" id="requirejs.config">
-12 - удаляем с конца
</script>
В my_json у нас будет все, что находится внутри тега script.