框架原始碼獲取時提示:實時錯誤,拒絕訪問
同一個網頁上有多個框架,有的框架可以得到原始碼,有的就提示錯誤
最后發現,提示錯誤的框架都好像是限定了來源
我用的獲取框架原始碼的代碼是 WebBrowser1.document.frames(0).document.documentElement.outerHTML
想問一下這種問題該怎么解決
uj5u.com熱心網友回復:
以前也遇到過.......沒有深究,后來直接改成用Edanmo's OLE interface & functions...(也就是參考olelib.tlb)直接將webbrowser中的所有document裝入一個document陣列中,然后就簡單了........uj5u.com熱心網友回復:
樓上怎么裝入陣列的,這個方法貌似不錯。uj5u.com熱心網友回復:
參考:http://blog.csdn.net/lbuskeep/article/details/6208676
uj5u.com熱心網友回復:
看我博客。有原始碼uj5u.com熱心網友回復:
Private Sub Command1_Click()
Dim Doc2 As HTMLDocument
Dim Web2 As WebBrowser_V1
Set Web2 = GetFrameIframeLikeUrl(WebBrowser1.Document, "*baidu.com*")
Set Web2 = GetFrameLikeUrl(WebBrowser1.Document, "*baidu.com*")
Set Web2 = FindFrameByUrl(WebBrowser1.Document, "*baidu.com*")
If Not Web2 Is Nothing Then
Set Doc2 = Web2.Document
'MsgBox "框架網頁中的文字是:" & Doc2.body.innerText
End If
End Sub
'以下三種方法所用時間為130,82,28 微秒(一秒=100萬微秒,=1000毫秒,1毫秒=1000微秒)
Function GetFrameIframeLikeUrl(Vdoc As HTMLDocument, LikeUrl As String) As WebBrowser_V1
Dim Vtag, Tname As String, FrameWeb As WebBrowser_V1
For Each Vtag In Vdoc.All
Tname = Vtag.tagName
If Tname = "IFRAME" Or Tname = "FRAME" Then
Set FrameWeb = Vtag
If FrameWeb.LocationURL Like LikeUrl Then
Set GetFrameIframeLikeUrl = FrameWeb
Exit Function
End If
End If
Next
End Function
Function GetFrameLikeUrl(Vdoc As HTMLDocument, LikeUrl As String) As WebBrowser_V1
Dim FrameWeb As WebBrowser_V1, MyFrames As Object, I As Long
Set MyFrames = Vdoc.getElementsByTagName("FRAME")
For I = 0 To MyFrames.length - 1
Set FrameWeb = MyFrames(I)
If FrameWeb.LocationURL Like LikeUrl Then
Set GetFrameLikeUrl = FrameWeb
Exit Function
End If
Next
End Function
Function FindFrameByUrl(Doc As HTMLDocument, LikeUrl As String) As WebBrowser_V1
'方法2:按網址得到跨域的web
''DOC為要處理的webbrowser.DOCUMENT
'這個方法要參考OLELIB.TLB http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip
On Error Resume Next
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
Dim pBrowser As WebBrowser_V1
Set pContainer = Doc
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
Do While pEnumerator.Next(1, pUnk) = 0
Set pBrowser = pUnk
If pBrowser.LocationURL Like LikeUrl Then
'可以在這里加條件判斷得到指定的frame,基本可以根據url或者innerHTML中的某個關鍵字符
Set FindFrameByUrl = pBrowser
Exit Do
End If
Loop
Set pEnumerator = Nothing
End If
DoEnd:
Set pContainer = Nothing
End Function
'130,82,28
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/105145.html
標籤:網絡編程
下一篇:Vb做局域網螢屏監控,求大神幫忙
