本帖最后由 xmyjk 于 2012-6-10 11:55 編輯 借你的帖子講講吧,多頁(yè)數(shù)據(jù),我一般的操縱過(guò)程: 首先是看。 觀察網(wǎng)頁(yè)的URL,或者是用HTTPFOX看URL和參數(shù),如果POST的,看看是否GET也能獲取。然后試看看,是否能通過(guò)URL去改變頁(yè)面的切換。 如果可以,那就很簡(jiǎn)單了。 然后,接著,試看看EXCEL自身自帶的功能,導(dǎo)入網(wǎng)頁(yè)數(shù)據(jù)能不能取到數(shù)據(jù),行的話,錄個(gè)宏改個(gè)循環(huán)就了事了。 因?yàn)镋XCEL自帶的導(dǎo)入功能還是很強(qiáng)大,只要頁(yè)面是非轉(zhuǎn)跳或者腳本書(shū)寫(xiě)或者框架的,就是直接源代碼有TABLE的代碼的,都是可以用QUERYTABLE直接取到的。 如果QUERYTABLE取不到數(shù),那一般網(wǎng)頁(yè)就是動(dòng)態(tài)頁(yè)面或者框架頁(yè)面等情況啦,那我一般就會(huì)用HTTPFOX,進(jìn)一步去查找網(wǎng)頁(yè)的真實(shí)數(shù)據(jù)源(一般就是第一頁(yè)換到第二頁(yè)這么去試,很容易找到的),找到了,后續(xù)無(wú)非很簡(jiǎn)單,就是文本處理,使用XMLHTTP即可處理,后續(xù)無(wú)非就是注意調(diào)整HTTP的頭部消息,POST什么的。部分頁(yè)面比較變態(tài),有盜鏈處理,大部分XMLHTTP處理不了的,需要用WINHTTP這個(gè)對(duì)象,不過(guò)這個(gè)對(duì)象和XMLHTTP非常類(lèi)似,反正無(wú)非是偽造COOKIE或者REFERER或者多頁(yè)面轉(zhuǎn)跳,我在論壇相應(yīng)帖子的求助都有答過(guò),你翻翻即知。 最后,如果是后綴是.asp或者.aspx的頁(yè)面,通常比較變態(tài),POST參數(shù)有“_VIEWSTATE”的這種,VIEWSTATE存在上一頁(yè)面中,要讀取的話就要訪問(wèn)上一個(gè)業(yè)務(wù),這種頁(yè)面一般就比較累,有時(shí)候用IE/WEBBROWSER去處理會(huì)比較簡(jiǎn)單,原理也很簡(jiǎn)單,就是你說(shuō)的DOM的機(jī)制,去取數(shù),無(wú)非就是找到數(shù)據(jù)的TABLE,然后去TR,取TD,反正配合FIREBUG去觀察就是了。 最最后,就是一類(lèi),很變態(tài)的頁(yè)面,就是一種框架頁(yè)面,能禁止跨域訪問(wèn)的,反正你搜搜我的帖子,后來(lái)我是用國(guó)外高手用JAVA寫(xiě)的一些函數(shù),偽造一個(gè)容器,把框架剝離出來(lái),然后訪問(wèn)讀取。 總之,多動(dòng)動(dòng)手很重要,碰多了,就是知道哪些頁(yè)面怎么處理了。最后其實(shí)取數(shù)這塊,不需要有多少JAVASCRIPT的語(yǔ)言學(xué)習(xí)的,不過(guò)有了,也很多好處就是了。例如腳本生成數(shù)據(jù)的頁(yè)面,就可以用網(wǎng)頁(yè)的代碼,然后用MSScriptControl控件直接處理腳本,生成數(shù)據(jù)流,導(dǎo)出即可。 另外最近越來(lái)越多頁(yè)面是XML格式的了,反正取得XML文體后,用XML DOM繼續(xù)獲取就是了?;蛘?,也可取得HTML代碼,像你說(shuō)的去頭截尾,不過(guò),我使用Microsoft.XMLDOM對(duì)象或者直接調(diào)用HTML文檔對(duì)象,然后里面有 loadXML等方法,加載代碼文本,有時(shí)候也能成功構(gòu)建XML文體或HTML文體,也可打打簡(jiǎn)化取數(shù)的操作。不過(guò)我很少這么做。總感覺(jué)還不如是直接用IE方法算了。 最后,VBA里面處理網(wǎng)頁(yè),其實(shí)會(huì)比較辛苦,如果你才剛?cè)胧钟钟幸欢ㄓ?jì)算機(jī)背景的,也是比較建議你直接去學(xué)AAU這個(gè)軟件的,好處就是庫(kù)很多參考代碼很多,可以導(dǎo)入庫(kù)啊或復(fù)制黏貼啊,很方便啊,不過(guò)前提就是,語(yǔ)法它比較類(lèi)似JAVASCRIPT,最好要有相關(guān)的語(yǔ)言背景就是了。 |
|
來(lái)自: 快樂(lè)的探路者 > 《電腦知識(shí)》