Извлечь переменную из скрипта на сайте
На сайте есть блок скриптов
<script>
document.addEventListener('DOMContentLoaded', function() {
var obj = {
"title": "Short Sweatshirt",
"price": "$24.99",
"description": "Short sweatshirt with long sleeves and ribbing at neckline, cuffs, and hem. 57% cotton, 43% polyester. Machine wash cold.",
"img_path": "/static/img/" + "96230-C" + ".jpg"
};
var cardTitle = document.querySelector(".card-title");
var cardPrice = document.querySelector(".card-price");
var cardDescription = document.querySelector(".card-description");
var cardImg = document.querySelector("img.card-img-top");
cardTitle.innerHTML = obj.title;
cardPrice.innerHTML = obj.price;
cardDescription.innerHTML = obj.description;
cardImg.setAttribute('src', obj.img_path);
});
</script>
Мне нужно каким-то образом вытащить из этого блока obj, но вот не понимаю как это сделать. Знаю у requests.get есть параметр .json(), который решает проблему в иных случаях, но я сам блок скрипта вытаскиваю через bs4. Что в таком случае можно сделать?
Ответы (1 шт):
Автор решения: Сергей Ш
→ Ссылка
txt = '''<script>
document.addEventListener('DOMContentLoaded', function() {
var obj = {
"title": "Short Sweatshirt",
"price": "$24.99",
"description": "Short sweatshirt with long sleeves and ribbing at neckline, cuffs, and hem. 57% cotton, 43% polyester. Machine wash cold.",
"img_path": "/static/img/" + "96230-C" + ".jpg"
};
var cardTitle = document.querySelector(".card-title");
var cardPrice = document.querySelector(".card-price");
var cardDescription = document.querySelector(".card-description");
var cardImg = document.querySelector("img.card-img-top");
cardTitle.innerHTML = obj.title;
cardPrice.innerHTML = obj.price;
cardDescription.innerHTML = obj.description;
cardImg.setAttribute('src', obj.img_path);
});
</script>'''
qqq = txt.find('var obj = {')
aaa = eval(txt[qqq+10:txt.find('}')+1])
print(aaa['title'])
print(aaa['price'])
print(aaa['img_path'])
# Short Sweatshirt
# $24.99
# /static/img/96230-C.jpg