Извлечь переменную из скрипта на сайте

На сайте есть блок скриптов

  <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
→ Ссылка