經常看到一些朋友在討論如何采集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:
打開,看到什么了,是不是眼睛被亮瞎了:
這就是你要的數據,好了,今天就到這里,謝謝大家關注。
后續再給大家分享其他網頁數據采集的熱點難點技術話題。