Javascript 在浏览器控制台中使用java脚本和JQuery从网页获取数据

Javascript 在浏览器控制台中使用java脚本和JQuery从网页获取数据,javascript,html,jquery,json,google-chrome,Javascript,Html,Jquery,Json,Google Chrome,我在产品网站上有以下特定产品的链接,我如何获得产品规格数据作为对象{} 我需要得到以下信息: 我在浏览器控制台中使用了下面的metgod,但它返回了大量数据: $.get("https://www.virginmegastore.ae/en/gaming/playstation/playstation-games/sonic-forces---ps4/p/714792", function(data){ console.log(data); }); 输出为:

我在产品网站上有以下特定产品的链接,我如何获得产品规格数据作为对象
{}

我需要得到以下信息:

我在浏览器控制台中使用了下面的metgod,但它返回了大量数据:

$.get("https://www.virginmegastore.ae/en/gaming/playstation/playstation-games/sonic-forces---ps4/p/714792", function(data){
    console.log(data);
  });
输出为:

<!DOCTYPE html>
<!--[if IE 8 ]> <html class="lt-ie9 ie8" lang="en"> <![endif]-->
<!--[if IE 9 ]> <html class="lt-ie10 ie9" lang="en"> <![endif]-->
<!--[if (gte IE 10)|!(IE)]><!--> <html lang="en"> <!--<![endif]-->
<head>
    <title>
        Sonic Forces - PS4 | Playstation Games | Playstation | Gaming | Virgin Megastore</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1">

    <meta name="msvalidate.01" content="D1EAD7D5C2ED626960668C0EAD15CB6A" />

    <meta name="keywords" content="Project Sonic 2017,Sonic Force,SF">
<meta name="description" content="When things look their darkest, even heroes need a helping hand. For the first time in the Sonic series, players can create their own original Hero Character, and cu">
<meta name="robots" content="index,follow">
<link rel="canonical" href="https://www.virginmegastore.ae/gaming/playstation/playstation-games/sonic-forces---ps4/p/714792"/>

    <link rel="alternate" hreflang="en-AE" href="https://www.virginmegastore.ae/en"/>

    <link rel="shortcut icon" type="image/x-icon" media="all" href="/_ui/responsive/theme-virgin/images/icons/favicon.ico" />

    <link rel="apple-touch-icon" href="/_ui/responsive/theme-virgin/images/icons/apple-icon.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/_ui/responsive/theme-virgin/images/icons/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/_ui/responsive/theme-virgin/images/icons/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/_ui/responsive/theme-virgin/images/icons/apple-icon-152x152.png">



    <link rel="stylesheet" type="text/css" media="all" href="/_ui/addons/assistedservicestorefront/responsive/common/css/assistedservicestorefront.css"/>
<link rel="stylesheet" type="text/css" media="all" href="/_ui/addons/assistedservicestorefront/responsive/common/css/storeFinder.css"/>
<link rel="stylesheet" type="text/css" media="all" href="/_ui/addons/assistedservicestorefront/responsive/common/css/customer360.css"/>
<link rel="stylesheet" type="text/css" media="all" href="/_ui/addons/payfortaddon/responsive/common/css/payfortaddon.css"/>
<link rel="stylesheet" type="text/css" media="all" href="//fonts.googleapis.com/css?family=Open+Sans:400,600,700,800"/>

<link rel="stylesheet" type="text/css" media="all" href="/_ui/responsive/theme-virgin/css/style.min.css?v=3.11.0"/>
    
<script type="text/javascript">

var mediator = (function() {
    var subscribe = function(tracker, fn) {
            if (!mediator.trackers[tracker])
            {
                mediator.trackers[tracker] = [];
            }
            mediator.trackers[tracker].push({context: this, callback: fn});
            return this;
        },

        publish = function(tracker) {
            if (!mediator.trackers[tracker])
            {
                return false;
            }
            var args = Array.prototype.slice.call(arguments, 1);
            for (var i = 0, l = mediator.trackers[tracker].length; i < l; i++)
            {
                var subscription = mediator.trackers[tracker][i];
                subscription.callback.apply(subscription.context, args);
            }
            return this;
        },

        publishAll = function() {
            if (Object.keys(mediator.trackers).length === 0)
            {
                return false;
            }
            for (var tracker in mediator.trackers)
            {
                var args = [tracker].concat(Array.prototype.slice.call(arguments));
                mediator.publish.apply(this, args);
            }
            return this;
        };

    return {
        trackers: {},
        publish: publish,
        publishAll: publishAll,
        subscribe: subscribe
    }
})()


</script><!-- Google Tag Manager -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NMB22J" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
            j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
            'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-NMB22J');</script>
    <!-- End Google Tag Manager -->
<!-- Google Tag Manager Data Layer -->
    <script type="text/javascript">
        
        window.dataLayer = window.dataLayer || [];
        

        window.dataLayer.push({
            'ecommerce': {
                'detail': {
                    'products': [{
                        'id':       '714792',
                        'name':     "Sonic Forces - PS4",
                        'brand':    'SEGA',
                        'price':    '99.0',
                        'category': 'Playstation Games',
                        'variant':
                                ''
                    }]
                }
            }
        })
        ;
  • 尝试通过正则表达式获取
    window.dataLayer.push
    的json字符串
  • 通过
    json.Parse()
    解析json字符串
  • json字符串使用单引号',应转换为双引号“
  • 与此示例代码类似,最后,
    productDetails
    是一个完整的js对象

    $.get(“https://www.virginmegastore.ae/en/gaming/playstation/playstation-games/sonic-forces---ps4/p/714792,函数(数据){
    var productDetailsJson=data.match(/window\.dataLayer\.push[^(]*\([^]*)\)/)[1];
    var productDetails=JSON.parse(productDetailsJson.replace(/'/g',“');
    console.log(productDetails);
    });
    
    更容易避免字符串化,console将通过这种方式为您很好地输出数据
    console.log(数据)
    对于(让项进入数据){console.log('item',data,'data[item]',data[item])}
    您使用DOM并从中提取特定的块,对于每个块您可以提取属性。您还可以检查XPATH是什么,是的,但是分布在html元素之间的数据,是否有任何方法可以通过一个选择器获取所有这些元素?@Ron
    **'products': [{
                                'id':       '714792',
                                'name':     "Sonic Forces - PS4",
                                'brand':    'SEGA',
                                'price':    '99.0',
                                'category': 'Playstation Games',
                                'variant':
                                        ''
                            }]**