2017-06-25 8 views
1

私はVBAで正規表現を使用して、Webページ上の電子メールを取得しています。これらのフォーマットはすべて非常に異なっています。私はこれらのフォーマットの違いのためにページテキスト全体にアクセスするのに苦労しています。IEオブジェクトからページ全体のテキストを返します

現在、私のアプローチは、ちょうどieSet ie = CreateObject("InternetExplorer.Application")

から来

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

を使用することは十分に簡単なようですが、そのようなthis oneなどの一部のページではない、すべてのページのテキストが返されています。 「すべてのページテキスト」は、たとえばctrl + fのようなものを意味します。リンクされたページでは、各「ステップ」のテキストは返されないようです。異なるWebページ間にバリエーションがあると思います。特に、HTMLでフォーマットされていない場合はそうです。 を押す

Webページ上のは私が好きなテキストを返し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 
関連する問題