经常看到一些朋友在讨论如何采集flash中的数据,讨论来讨论区,结论就是:flash不能采集,其实也不总是这样。本篇就跟大家分享如何采集flash中的数据。
在开始之前,先说明一下:一般来说flash中的数据是不能被现有技术很容易采集到的,但是也不能谈flash色变,要具体问题具体分析,有些flash是可以通过一些分析发现背后的数据。然后采集就变得很容易了。
具体案例:搜房房价走势采集。
先看看房价走势页面:http://baolishangcheng.soufun.com/house/2810932360/fangjia.htm
可以看出,这是个flash的,还有很多鼠标移动上去显示的数据。
右键点击,发现确实是flash,然后查看源码,发现如下信息:
<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>
原来flash是放在iframe中的,好的,打开改iframe对应的网页
http://pinggus.soufun.com/Estimate/process/makeflashchart.aspx?dis=3&city=%C9%EE%DB%DA&height=218
别激动,没看到数据,还是flash,再查看源码,发现一堆脚本:
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:
http://pinggus.soufun.com/Estimate/process/makechartdata.aspx?dis=3&newcode=1010035274&city=%25c9%25ee%25db%25da&district=&commerce=&isprojname=
打开,看到什么了,是不是眼睛被亮瞎了:
这就是你要的数据,好了,今天就到这里,谢谢大家关注。
后续再给大家分享其他网页数据采集的热点难点技术话题。