[英]Excel VBA Web Scraping IE NAVIGATE method Works Vs MSXML2.XMLHTTP60 not Working
[英]InternetExplorer vs MSHTML2.XMLHTTP60 in VBA
我在嘗試控制VBA形式的IE時遇到了這種易怒的IE綜合症。 我打算打開一個網站並查找特定文件(即XLS),然后下載。
我的代碼:
Dim IE as InternetExplorer ' I could also use "Object" here
Dim HTMLDoc as HTMLDocument
Dim OHTML_Element as IHTMLElement
Set IE = New InternetExplorer ' I could also use "InternetExplorerMedium" here
IE.Silent = True
IE.Navigate (sURL)
IE.Visible = True
Set HTMLDoc = IE.document
mimtype = "Microsoft Office Excel 97-2003 Worksheet"
For Each oHTML_Element In HTMLDoc.Links
If InStr(oHTML_Element.mimeType, mimtype) Then
If InStr(oHTML_Element.href, FileType) Then
' Get the SOURCE file and DESTINATION files
SRCfile = mainURL & oHTML_Element.pathname
FileName = DESTPath & oHTML_Element.nameProp
'Download the file
ret = URLDownloadToFile(0, SRCfile, FileName, 0, 0)
'See if the download happened correctly
If ret = 0 Then
'all went well
GetFile = True
Else
MsgBox "There was a problem downloading the file.", vbCritical, "DOWNLOADING ERROR!"
GetFile = False
Exit Function
End If
Exit For
End If
End If
Next oHTML_Element
現在,這似乎在過去幾個月中一直很穩定。 從過去的兩天開始,系統在IE.navigate(sURL
之后掛起。在調試模式下,我可以清楚地看到已創建的IE
對象的所有字段,但是在執行IE.navigate(sURL)
之后,該對象的所有字段消失了,但是該網站確實可以正常打開。但是,此問題不是很“一致”,因此它可能消失或消失,因此很煩人!這個“消失”的字段很危險,因為在前面我有一個if
條件來檢查這些字段是否為空,如果為True
退出。
只是一點點背景,我使用的是Win 7,IE 11(昨天在IE 10上出現此問題之后,昨天進行了升級,之前它與IE 10一起工作了幾個月)
拖曳WWW后,似乎有些人在遇到此問題。 關於Stackoverflow的解決方案建議使用MSHTML.XMLHTTP60
。 所以,我嘗試了
Dim IE as MSHTML2.XMLHTTP60
Dim HTMLDoc as MSHTML.HTMLDocument
Dim HTMLBod as
Set IE = new MSHTML2.XMLHTTP60
IE.open "Get", sURL, False
IE.send
Set HTMLDoc = new MSHTML.HTMLDocument
HTMLDoc.body.innerHtml = IE.responseText
???? How do I proceed further to "search" for a XLS file and gets its "href" link?
我嘗試查看HTMLDoc
(使用MSHTML)和HTMLDoc
(使用InternetExplorer)中的數據(通過“監視窗口”),數據似乎並不相同。 因此,我之前的“搜索mime類型和href並下載”程序將無法正常工作。
如果有人可以提供一些幫助,我將不勝感激。 我正在尋找一種解決方案,該解決方案可以幫助我糾正InternetExplorer
的不一致行為,也可以使用MSHTML2
解決方案
好吧...經過48個小時的苦苦掙扎並拖網瀏覽,沒有找到任何可以解決我dim IE as InternetExplorer
類型對象問題)的東西,我“終於” IE.Navigate(url)
解決了IE.Navigate(url)
崩潰問題。
該錯誤似乎是由於IE瀏覽器中的某些“錯誤”設置而發生的,您可能自己更改了該設置,或者某些加載項,或者某些其他操作可能更改了這些設置。 萬能的“ RESET”來搶救! IE的“ Internet選項”對話框中有一個“重置”按鈕,此操作將IE重置為標准設置,並且在執行此操作后所有問題均消失了!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.