请教如何获取百度指数flash数据?http://index.baidu.com/main/word.php?word=跳舞鱼
我想得到传给flash的查询结果。
即每天查询“跳舞鱼”的次数.好像涉及:FLASH获取数据默认都是有跨域限制,此PHP后台和flash之间的加密解密协议。
"PHP代理把数据用ExternalInterface传给FLASH。"
"百度指数的结果分析器来取得数值。"
我不太理解。
想请问如何下手。谢谢!http://index.baidu.com/script/swf.js<!--创建相关趋势Flash-->
<script language="javascript" type="text/javascript">
baidu.swf.create(
                {
                        'id'                    : "trendFlash",
                        'width'                 : "501",
                        'height'                : "390",
                        'ver'                   : "9.0.0",
                        'errorMessage'  : "Please download the newest flash player.",
                        'url'                   : "../fla/TrendAnalyser.swf",
                        'bgColor'               : "#FFFFFF",
                        'wmode'                 : "opaque",
                        'vars'                  : {
              keys:"web",
              areas:"0",
              periods:"2010-07-03|2010-08-01",
              periodNames:"null",
     shortKeys:"web",
      dv:1,
      nc:0,
                                gateway:"http://index.baidu.com/gateway.php",
snapshot:"http://index.baidu.com/main/show.php"
                        }
                },
                "trendFlashContainer");
</script>http://index.baidu.com/fla/Trend ... ;periods=2010-07-03|2010-08-01&periodNames=null&shortKeys=%E6%96%B0%E9%97%BB&dv=1&gateway=http%3A%2F%2Findex.baidu.com%2Fgateway.php&snapshot=http%3A%2F%2Findex.baidu.com%2Fmain%2Fshow.php

解决方案 »

  1.   

    这个我干过
    你用firefox的插件live http header抓下包能看到,flash是从后台取数据,然后才生成曲线的,flash取的数据是一个xml文件,你可以通过分析这个xml文件来获取需要的数据
      

  2.   


      呵呵,最简单的办法,直接通过iframe把查询结果页引用到自己的页面里。  不过你不只是要显示,那就像 jiuzhang说的, 看能不能下载xml文件,通过flash实现自己想要的显示效果。
      

  3.   

    http://index.baidu.com/fla/TrendAnalyser.swf?keys=%E6%96%B0%E9%97%BB&areas=0&periods=2010-07-03
      

  4.   


    window.baidu=window.baidu||{version:"1-0-0",emptyFn:function(){}};baidu.isString=function($){return(typeof $=="object"&&$&&$.constructor==String)||typeof $=="string"};baidu.swf=baidu.swf||{};baidu.swf.getMovie=function($){return document[$]||window[$]};baidu.swf.getVersion=function(){var B=navigator;if(B.plugins&&B.mimeTypes.length){var A=B.plugins["Shockwave Flash"];if(A&&A.description)return A.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")+".0"}else if(window.ActiveXObject&&!window.opera)for(var C=10;C>=2;C--){try{var _=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+C);if(_){return C+".0.0";break}}catch($){}}};baidu.swf.createHTML=function(M){M=M||{};var E=baidu.swf.getVersion(),J=1,K=M.ver||"6.0.0",_,$;if(E){E=E.split(".");K=K.split(".");for(var F=0;F<3;F++){_=parseInt(E[F],10);$=parseInt(K[F],10);if($<_)break;else if($>_){J=0;break}}}else J=0;if(!J)return"";var G=M.vars,D,B,I,L=["classid","codebase","id","width","height","align"];M.align=M.align||"middle";M.classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000";M.codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0";M.movie=M.url||"";delete M.vars;delete M.url;if(baidu.isString(G))M.flashvars=G;else{var C=[];for(D in G){I=G[D];if(I)C.push(D+"="+encodeURIComponent(I))}M.flashvars=C.join("&")}var H=["<object "];for(F=0,B=L.length;F<B;F++){I=L[F];H.push(" ",I,'="',M[I],'"')}H.push(">");var A={wmode:1,scale:1,quality:1,play:1,loop:1,menu:1,salign:1,bgcolor:1,base:1,allowscriptaccess:1,allownetworking:1,allowfullscreen:1,seamlesstabbing:1,devicefont:1,swliveconnect:1,flashvars:1,movie:1};for(D in M){I=M[D];if(A[D]&&I)H.push('<param name="'+D+'" value="'+I+'" />')}M.src=M.movie;M.name=M.id;delete M.id;delete M.movie;delete M.classid;delete M.codebase;M.type="application/x-shockwave-flash";M.pluginspage="http://www.macromedia.com/go/getflashplayer";H.push("<embed");for(D in M){I=M[D];if(I)H.push(" ",D,'="',I,'"')}H.push("></embed></object>");return H.join("")};baidu.swf.create=function(B,_){B=B||{};var A=baidu.swf.createHTML(B),$=true;if(_&&baidu.isString(_))_=document.getElementById(_);if(A.length<=0){A=B.errorMessage||"";$=false}if(_)_.innerHTML=A;else document.write(A);return $}http://index.baidu.com/script/swf.js
    请问baidu.swf.create创建swf时,传入的数据参数是什么?
    我希望通过传入的参数获取查询的数据结果.
      

  5.   


    window.baidu = window.baidu || {
        version: "1-0-0",
        emptyFn: function () {}
    };
    baidu.isString = function ($) {
        return (typeof $ == "object" && $ && $.constructor == String) || typeof $ == "string"
    };
    baidu.swf = baidu.swf || {};
    baidu.swf.getMovie = function ($) {
        return document[$] || window[$]
    };
    baidu.swf.getVersion = function () {
        var B = navigator;
        if (B.plugins && B.mimeTypes.length) {
            var A = B.plugins["Shockwave Flash"];
            if (A && A.description) return A.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s)+r/, ".") + ".0"
        } else if (window.ActiveXObject && !window.opera) for (var C = 10; C >= 2; C--) {
            try {
                var _ = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + C);
                if (_) {
                    return C + ".0.0";
                    break
                }
            } catch ($) {}
        }
    };
    baidu.swf.createHTML = function (M) {
        M = M || {};
        var E = baidu.swf.getVersion(),
            J = 1,
            K = M.ver || "6.0.0",
            _, $;
        if (E) {
            E = E.split(".");
            K = K.split(".");
            for (var F = 0; F < 3; F++) {
                _ = parseInt(E[F], 10);
                $ = parseInt(K[F], 10);
                if ($ < _) break;
                else if ($ > _) {
                    J = 0;
                    break
                }
            }
        } else J = 0;
        if (!J) return "";
        var G = M.vars,
            D, B, I, L = ["classid", "codebase", "id", "width", "height", "align"];
        M.align = M.align || "middle";
        M.classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000";
        M.codebase = "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0";
        M.movie = M.url || "";
        delete M.vars;
        delete M.url;
        if (baidu.isString(G)) M.flashvars = G;
        else {
            var C = [];
            for (D in G) {
                I = G[D];
                if (I) C.push(D + "=" + encodeURIComponent(I))
            }
            M.flashvars = C.join("&")
        }
        var H = ["<object "];
        for (F = 0, B = L.length; F < B; F++) {
            I = L[F];
            H.push(" ", I, '="', M[I], '"')
        }
        H.push(">");
        var A = {
            wmode: 1,
            scale: 1,
            quality: 1,
            play: 1,
            loop: 1,
            menu: 1,
            salign: 1,
            bgcolor: 1,
            base: 1,
            allowscriptaccess: 1,
            allownetworking: 1,
            allowfullscreen: 1,
            seamlesstabbing: 1,
            devicefont: 1,
            swliveconnect: 1,
            flashvars: 1,
            movie: 1
        };
        for (D in M) {
            I = M[D];
            if (A[D] && I) H.push('<param name="' + D + '" value="' + I + '" />')
        }
        M.src = M.movie;
        M.name = M.id;
        delete M.id;
        delete M.movie;
        delete M.classid;
        delete M.codebase;
        M.type = "application/x-shockwave-flash";
        M.pluginspage = "http://www.macromedia.com/go/getflashplayer";
        H.push("<embed");
        for (D in M) {
            I = M[D];
            if (I) H.push(" ", D, '="', I, '"')
        }
        H.push("></embed></object>");
        return H.join("")
    };
    baidu.swf.create = function (B, _) {
        B = B || {};
        var A = baidu.swf.createHTML(B),
            $ = true;
        if (_ && baidu.isString(_)) _ = document.getElementById(_);
        if (A.length <= 0) {
            A = B.errorMessage || "";
            $ = false
        }
        if (_) _.innerHTML = A;
        else document.write(A);
        return $
    }
      

  6.   

    我用HTTPAnalyzer(Mozilla FireFox)抓包,查询结果不是xml,没有发现相关的数据传递。
    不知道百度指数PHP与Flash通信是如何实现的?
      

  7.   

    那个是用的flash的AMF数据传输方式,