常常看到一些朋友在讨论如何采集flash中的数据,讨论来讨论区,结论就是:flash不能采集,其实也不老是这样。本篇就跟你们分享如何采集flash中的数据。web
在开始以前,先说明一下:通常来讲flash中的数据是不能被现有技术很容易采集到的,可是也不能谈flash色变,要具体问题具体分析,有些flash是能够经过一些分析发现背后的数据。而后采集就变得很容易了。express
具体案例:搜房房价走势采集。google
先看看房价走势页面:http://baolishangcheng.soufun.com/house/2810932360/fangjia.htmurl
能够看出,这是个flash的,还有不少鼠标移动上去显示的数据。spa
右键点击,发现确实是flash,而后查看源码,发现以下信息:3d
<iframe src="http://pinggus.soufun.com/Estimate/process/makeflashchart.aspx?dis=3&city=%C9%EE%DB%DA&height=218" width="680" height="218" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe>code
原来flash是放在iframe中的,好的,打开改iframe对应的网页htm
http://pinggus.soufun.com/Estimate/process/makeflashchart.aspx?dis=3&city=%C9%EE%DB%DA&height=218ip
别激动,没看到数据,仍是flash,再查看源码,发现一堆脚本:ci
swfobject.embedSWF("http://img.soufun.com/secondhouse/image/pinggu/js/open-flash-chart.swf", "mychart", "100%", "218", "9.0.0", "expressInstall.swf", {"data-file":"makechartdata.aspx%3fdis%3d3%26newcode%3d1010035274%26city%3d%25c9%25ee%25db%25da%26district%3d%26commerce%3d%26isprojname%3d"},{allowScriptAccess:'always',wmode:'transparent'} | |
);
|
玄机就在这里,仔细观察该脚本,发现其使用了一个叫作open-flash-chart的flash,通过google,是个开源的,打开其官网,发现关于它如何使用的文档:
http://teethgrinder.co.uk/open-flash-chart/
再结合上面的源码,发现最关键的地方,数据是由:data-file指定的:
"data-file":"makechartdata.aspx%3fdis%3d3%26newcode%3d1010035274%26city%3d%25c9%25ee%25db%25da%26district%3d%26commerce%3d%26isprojname%3d"
在通过一些基本常识便可发现这是一个url,手工对其解码,获得以下url:
makechartdata.aspx?dis=3&newcode=1010035274&city=%25c9%25ee%25db%25da&district=&commerce=&isprojname=
加上url前半部分,获得完整url:
打开,看到什么了,是否是眼睛被亮瞎了:
这就是你要的数据,好了,今天就到这里,谢谢你们关注。
后续再给你们分享其余网页数据采集的热点难点技术话题。