常常看到一些朋友在討論如何採集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:
打開,看到什麼了,是否是眼睛被亮瞎了:
這就是你要的數據,好了,今天就到這裏,謝謝你們關注。
後續再給你們分享其餘網頁數據採集的熱點難點技術話題。