请教如何获取百度指数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
我想得到传给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
你用firefox的插件live http header抓下包能看到,flash是从后台取数据,然后才生成曲线的,flash取的数据是一个xml文件,你可以通过分析这个xml文件来获取需要的数据
呵呵,最简单的办法,直接通过iframe把查询结果页引用到自己的页面里。 不过你不只是要显示,那就像 jiuzhang说的, 看能不能下载xml文件,通过flash实现自己想要的显示效果。
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时,传入的数据参数是什么?
我希望通过传入的参数获取查询的数据结果.
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 $
}
不知道百度指数PHP与Flash通信是如何实现的?