好久沒有上csdn了,最近工作還是非常忙,對不住XDJM們了
最近一直在編寫一款電影管家程序,其中有個功能就是:
用戶輸入一個關(guān)鍵字(一般是電影名),然后程序就自動到某網(wǎng)站(保密,免得被河蟹
)采集所需的數(shù)據(jù),其實(shí)就是用代碼去下載網(wǎng)頁源碼,然后要么正則,要么直接字符串?dāng)?shù)組解析。
現(xiàn)在最最難的地方就是:這個電影網(wǎng)站是Ajax構(gòu)架的,網(wǎng)頁源碼用常規(guī)方法直接獲取的話,根本得不到完整的源碼或者能得到處理起來也繁瑣(Webbrowser控件),動態(tài)加載的部分還在娘胎里呢
注:
一般的得網(wǎng)頁源碼常規(guī)方法:
1.Inet控件(得不到完整源碼)
2.Webbrowser控件(可以得到,但是處理繁瑣,老是判斷不好是否完全加載)
3.Winsock控件(得不到完整源碼)
4.XmlHtpp組件(得不到完整源碼)
5.API直接下載遠(yuǎn)程網(wǎng)頁(一樣得不到完整源碼)
6....
好了,廢話不多說了,那怎么樣既能得到完整我源碼,又處理起來非常方便呢?
我在網(wǎng)上也找了好久好久了,百度、谷歌...都沒能找到有效的解決方案,今天突然直接靈感一現(xiàn),想到了一種目前算非常完美的解決方法。既然Webbrowser控件能加載完整的源碼,那我自然就想到了咱們每天在用的IE瀏覽器了(我現(xiàn)在用的是谷歌瀏覽器Chrome
)
我們的IE和Webbrowser有著相當(dāng)緊密的聯(lián)系,具體多緊密那就要問問微軟了,有木有?
用com對象動態(tài)創(chuàng)建技術(shù),即可在VB程序中創(chuàng)建一個IE,然后訪問需要的網(wǎng)址,等待加載完畢,然后就可以十分方便地得到完整的源碼,是不是很誘人???呵呵...
現(xiàn)在給出核心源碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Function GetFullHtml(vURL As String ) As String
Dim ie As Object
Dim element As Object
Set ie = CreateObject( "InternetExplorer.Application" )
With ie
.Visible = False
.navigate vURL
Do Until .Readystate = 4
DoEvents
Loop
GetFullHtml = .Document.body.innerhtml
End With
Set ie = Nothing
End Function
|
呵呵,怎么樣?以上簡短的代碼幾乎可以解決所有網(wǎng)頁源碼的下載難題!最重要的是:它可以突破Ajax!
好了,誠接板磚中...
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。