Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PhantomJS抓取:在脚本标记中获取CDATA_Javascript_Html_Dom_Phantomjs - Fatal编程技术网

Javascript PhantomJS抓取:在脚本标记中获取CDATA

Javascript PhantomJS抓取:在脚本标记中获取CDATA,javascript,html,dom,phantomjs,Javascript,Html,Dom,Phantomjs,我正在尝试使用PhantomJS从网页中提取一些JS生成的数据。 我能够获取page.content,并且我可以看到我感兴趣的数据包含在脚本和CDATA标记中: <!DOCTYPE html> <html style="" class="someclass"> <head> <meta class="meta-class-1"> <meta class="meta-class-1">

我正在尝试使用PhantomJS从网页中提取一些JS生成的数据。 我能够获取page.content,并且我可以看到我感兴趣的数据包含在脚本和CDATA标记中:

<!DOCTYPE html>
    <html style="" class="someclass">
    <head>
        <meta class="meta-class-1">
        <meta class="meta-class-1">

        <link rel="shortcut" type="image/x-icon" href="/assets/...">
        <meta content="width=device-width, initial-scale=1, maximum-scale=1.0" name="viewport">
        <title>Page Title</title>
        <link rel="stylesheet" media="all" href="/assets/page.css">
        <script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script>
        <script>
            //<![CDATA[
            window.gon={};gon.data={ "Interesting data":"the data" };
            //]]>
        </script>

        <script src="//anoterscript.js"></script>

    </head>
    <body>
    </body>
    </html>
我尝试过用几种不同的方法解析结果(libxml和node phantom,page.content解析使用JQuery),但到目前为止还无法获得任何脚本数据。 是否可以使用PhantomJs实现这一点?我做错了什么

首先查看您正在选择的标记:

这不是页面上的第一个脚本。您需要选择正确的标记


可能只是使用
1
而不是
0

尝试使用eval()…在我尝试过的浏览器中工作,但没有效果。我发布的代码过于简化,我的脚本排在第14位左右。Facepalm对我来说,你是对的,我在脚本排序上犯了一个愚蠢的错误。谢谢你的帮助。
"use strict";
var page = require('webpage').create();

page.open('https://prioridata.com/apps/monzo-1052238659/country-split', function () {

  page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {

    var scriptCtnt = page.evaluate(function() {
       return [].map.call(document.getElementsByTagName('script')[0].innerHTML, function(data) {             
            return data;
        });
    });

    console.log('Data is ' + JSON.stringify(data));

    phantom.exit()
  });
});
document.getElementsByTagName('script')[0].innerHTML
<script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script>
    <script>
        //<![CDATA[
        window.gon={};gon.data={ "Interesting data":"the data" };
        //]]>
    </script>