If I do:
from bs4 import BeautifulSoup
import json
html_doc = """
<script id="js-context" type="application/json">{"is_completed": false, "is_bookmarked": false, "api_article_bookmark_url": "/api/v1/articles/python-pretty-print/bookmark/", "api_article_completion_status_url": "/api/v1/articles/python-pretty-print/completion_status/"}</script>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.find('script').get_text())
I get the JSON from the <script> printed, but it is minified, not expanded (pretty).
{"is_completed": false, "is_bookmarked": false, "api_article_bookmark_url": "/api/v1/articles/python-pretty-print/bookmark/", "api_article_completion_status_url": "/api/v1/articles/lorem-ipsum/"}
So I tried to use:
print(json.dumps(soup.find('script').get_text(), indent=4))
But, then I get a bunch of backslashes in the JSON. I assume that is because I am re-parsing the JSON or something?
"{\"is_completed\": false, \"is_bookmarked\": false, \"api_article_bookmark_url\": \"/api/v1/articles/python-pretty-print/bookmark/\", \"api_article_completion_status_url\": \"/api/v1/articles/lorem-ipsum/\"}"
How can I pretty print the JSON without getting these backslashes?