Извлеч json из <script>



  • Здравствуйте, подскажите как из тега script извлечь только json

    <script><![CDATA[
                        BACKEND.API = 'https://kaspi.kz/shop/rest/jsonapi';
                        BACKEND.state.productId = '15300099';
                        BACKEND.state.numberOfOrders = 0;
                        
                        BACKEND.state.bestOfferPrice = 2305.0;
                        
                        BACKEND.components.sellersOffers = {
      "components": [
        {
          "total": 2,
          "endpoint": "https://kaspi.kz/shop/p/kingston-canvas-go-sdcg2-64gbsp-15300099/offers/?c\u003d750000000",
          "t": {
            "loanForInstalment": "В рассрочку на",
            "pagination": {
              "next": "Следующая",
              "prev": "Предыдущая"
            },
            "noOverpayTooltip": "Рассрочка 0%",
            "showOnMap": "Показать на карте",
            "sort": "Сортировать",
            "loanInstalment": "В рассрочку",
            "reviews": [
              "отзыв",
              "отзыва",
              "отзывов"
            ],
            "loanCredit": "В кредит",
            "monthsShort": "мес",
            "addToCart": "Выбрать",
            "modalKaspiDelivery": {
              "title": "Kaspi Доставка",
              "button": "Закрыть",
              "list": [
                {
                  "text": "Междугородняя доставка точно в срок"
                },
                {
                  "text": "Гарантия сохранности товара"
                },
                {
                  "text": "Бесплатный возврат"
                }
              ]
            },
            "noOffersText": "Данный товар снят с продажи.",
            "sortByPrice": "по цене",
            "loanForCredit": "В кредит на"
          },
          "limit": 5,
          "id": "sellers",
          "sort": true,
          "loanPeriodSelector": {
            "showLoan": true,
            "active": 3,
            "els": [
              {
                "instalment": true,
                "months": 3
              }
            ]
          },
          "linkAllSellersOffers": "https://kaspi.kz/shop/p/kingston-canvas-go-sdcg2-64gbsp-15300099/?c\u003d750000000\u0026v\u003dsellers",
          "hideMap": true,
          "preloadedOffers": [
            {
              "reviewsQuantity": 1020,
              "reviewsLink": "https://kaspi.kz/shop/info/merchant/shumakovvn/reviews-tab/",
              "priceFormatted": "6 914 ₸",
              "shopLink": "https://kaspi.kz/shop/info/merchant/shumakovvn/address-tab/",
              "name": "U4U COMPANY",
              "rating": 4.5,
              "kaspiDelivery": false,
              "monthlyInstallments": {
                "3": {
                  "formattedPerMonth": "2 305 ₸",
                  "link": "https://kaspi.kz/shop/actions/cart/add?product\u003d15300099\u0026merchantId\u003dShumakovVN\u0026price\u003d6914.0\u0026installmentPlan\u003d3"
                },
                "6": {
                  "formattedPerMonth": "1 238 ₸",
                  "link": "https://kaspi.kz/shop/actions/cart/add?product\u003d15300099\u0026merchantId\u003dShumakovVN\u0026price\u003d6914.0\u0026installmentPlan\u003d6"
                },
                "24": {
                  "formattedPerMonth": "369 ₸",
                  "link": "https://kaspi.kz/shop/actions/cart/add?product\u003d15300099\u0026merchantId\u003dShumakovVN\u0026price\u003d6914.0\u0026installmentPlan\u003d24"
                },
                "12": {
                  "formattedPerMonth": "658 ₸",
                  "link": "https://kaspi.kz/shop/actions/cart/add?product\u003d15300099\u0026merchantId\u003dShumakovVN\u0026price\u003d6914.0\u0026installmentPlan\u003d12"
                }
              },
              "unitSalePrice": 6914.0,
              "id": "ShumakovVN",
              "deliveryOptions": [
                {
                  "type": "PICKUP",
                  "title": "Самовывоз"
                },
                {
                  "date": "завтра",
                  "price": "1 000 ₸",
                  "type": "DELIVERY",
                  "title": "Доставка"
                }
              ]
            },
            {
              "reviewsQuantity": 562,
              "reviewsLink": "https://kaspi.kz/shop/info/merchant/lch/reviews-tab/",
              "priceFormatted": "6 920 ₸",
              "shopLink": "https://kaspi.kz/shop/info/merchant/lch/address-tab/",
              "name": "DISTI",
              "rating": 4.5,
              "kaspiDelivery": false,
              "monthlyInstallments": {
                "3": {
                  "formattedPerMonth": "2 307 ₸",
                  "link": "https://kaspi.kz/shop/actions/cart/add?product\u003d15300099\u0026merchantId\u003dLCH\u0026price\u003d6920.0\u0026installmentPlan\u003d3"
                },
                "6": {
                  "formattedPerMonth": "1 239 ₸",
                  "link": "https://kaspi.kz/shop/actions/cart/add?product\u003d15300099\u0026merchantId\u003dLCH\u0026price\u003d6920.0\u0026installmentPlan\u003d6"
                },
                "24": {
                  "formattedPerMonth": "370 ₸",
                  "link": "https://kaspi.kz/shop/actions/cart/add?product\u003d15300099\u0026merchantId\u003dLCH\u0026price\u003d6920.0\u0026installmentPlan\u003d24"
                },
                "12": {
                  "formattedPerMonth": "658 ₸",
                  "link": "https://kaspi.kz/shop/actions/cart/add?product\u003d15300099\u0026merchantId\u003dLCH\u0026price\u003d6920.0\u0026installmentPlan\u003d12"
                }
              },
              "unitSalePrice": 6920.0,
              "id": "LCH",
              "deliveryOptions": [
                {
                  "date": "14 февраля",
                  "type": "PICKUP",
                  "title": "Самовывоз"
                },
                {
                  "date": "14 февраля",
                  "price": "1 000 ₸",
                  "type": "DELIVERY",
                  "title": "Доставка"
                }
              ]
            }
          ]
        }
      ]
    };
                    ]]></script>
    


  • @john_bradley
    RegExp



  • @john_bradley said in Извлеч json из <script>:

    Здравствуйте, подскажите как из тега script извлечь только json

    Например вот так:

    sellersOffers = (\{[\s\S]*?\});
    

    https://regex101.com/r/9Zo5Ye/1



  • @fox лучший варинт - xpath - получить каждый текст //script
    Из списка выюрать нужный Вам



  • @drprime said in Извлеч json из <script>:

    @fox лучший варинт - xpath - получить каждый текст //script
    Из списка выюрать нужный Вам

    Я тоже сперва хотел через xpath, но через него не получится забрать только json из кода тега script



  • @fox eval() и он будет доступен. Тем более там нет обьектов браузера, так что ничего не мешает



  • @drprime said in Извлеч json из <script>:

    @fox eval() и он будет доступен. Тем более там нет обьектов браузера, так что ничего не мешает

    Я тоже иногда пользуюсь eval(), но в этом конкретном случае он выдаст ошибку. Так как объект BACKEND не объявлен.


    Интересно, а xpath выдаст код, вместе с <![CDATA[?



  • @fox если дейтвие получить элемент - да. Если получить текст - нет


Log in to reply