Я пытаюсь очистить некоторые данные внутри тега JavaScript в источнике HTML.
Ситуация: я могу добраться до соответствующего тега <script></script>
. Но внутри этого тега есть большая строка, которую нужно преобразовать, а затем проанализировать, чтобы я мог получить точные данные, которые мне нужны.
Проблема в том, что я не знаю, как это сделать, и не могу найти четкого и удовлетворительного ответа.
Вот код:
Моя цель - получить эти данные: "xe7fd4c285496ab91"
, который является идентификационным номером контента, также называемый "contentId"
.
import requests
import bs4
import re
url = 'https://www.khanacademy.org/computing/computer-programming/programming/drawing-basics/pt/making-drawings-with-code'
response = requests.get(url)
soup = bs4.BeautifulSoup(response.text,'html.parser') # by the way I am not sure if this is the right way to parse the link
item = soup.find(string=re.compile('contentId')) # with this line I can get directly to the exact javascript tag that I need
print(item) # but as you can see, it's a pretty big string, and I need to parse it to get the desired data. But you can find that the desired data "xe7fd4c285496ab91" is in it.
Я пытался использовать json.parse()
, но он не работает:
import json
jsonparsed=json.parse(item)
Получите эту ошибку:
AttributeError: 'NavigableString' object has no attribute 'json'
Мой вопрос:
Как я могу получить нужные данные?
Есть ли функция для преобразования строки в JavaScript, чтобы я мог ее проанализировать? Или способ конвертировать эту строку в файл JSON?
(Имейте в виду, что я сделаю это для нескольких ссылок с похожим HTML / JavaScript).