2017-06-25 80 views
1

我使用VBA的正則表達式來獲取網頁上的電子郵件,它們的格式都非常不同。由於格式的差異,我正在努力訪問整個頁面文本。從IE對象返回整頁文本

目前我的做法是隻使用

Dim retStr as String 
retStr = ie.document.body.innerText 

其中ie來自Set ie = CreateObject("InternetExplorer.Application")

看起來很簡單,但在一些網頁被返回,如this one頁面文字的還不是全部。通過「所有的頁面文本」,我的意思是任何東西ctrl + f會採取行動,例如。在鏈接頁面中,每個「步驟」的文本似乎都不會被返回。我想象不同的網頁之間會有差異,特別是如果它們沒有用HTML格式化的話。

按CTRL +在網頁上返回我想要的文字,有沒有訪問該文本不使用sendkeys的一些方法?

+2

您是否試圖通過使用即時窗口或本地窗口例如從'ie.document.body.innerText'檢查返回的字符串? –

+2

@RobinMackenzie,是的,只是發現了太多的錯誤,以適應調試窗口 – Greedo

回答

2

它對我來說工作得很好。我有一種感覺,你正在將它寫入Excel單元格,因此文本被截斷。

我把它寫到一個文本文件中,我得到了完整的文本。

Sub Sample() 
    Dim ie As Object 
    Dim retStr As String 

    Set ie = CreateObject("internetexplorer.application") 

    With ie 
     .Navigate "http://www.wikihow.com/Choose-an-Email-Address" 
     .Visible = True 
    End With 

    Do While ie.readystate <> 4: Wait 5: Loop 

    DoEvents 

    retStr = ie.document.body.innerText 

    '~> Write the above to a text file 
    Dim filesize As Integer 
    Dim FlName As String 

    '~~> Change this to the relevant path 
    FlName = "C:\Users\Siddharth\Desktop\Sample.Txt" 

    filesize = FreeFile() 

    Open FlName For Output As #filesize 

    Print #filesize, retStr 
    Close #filesize 
End Sub 

Private Sub Wait(ByVal nSec As Long) 
    nSec = nSec + Timer 
    While nSec > Timer 
     DoEvents 
    Wend 
End Sub