2016-11-21 49 views
2

我正在嘗試從格式的htm文件中刮取數據,因爲它包括法國字符的十六進制代碼,但刮過後它轉換成我不想要的字符。任何想法?? 我已經到處找這個,但沒有得到回答,所以我用我自己的麻煩註冊在這裏。因爲它是格式的法文字符VBA

SRC = UserForm1.WebBrowser1.document.body.innerHTML

上面的代碼獲得源代碼

特定 「源文本」 我想是以下: 粗體字體一個轉換爲額外的源文件中的字符。

"Intel Inside<sup>**&reg;**</sup><br>pour une<br>productivit**&#xE9;**<br>exceptionnelle."

而是我得到:

"Intel Inside<sup>®</sup><br>pour une<br>productivité<br>exceptionnelle. 

我如何獲得我第一個提到的文本。我剛剛開始學習VBA,所以我可能聽起來很天真,所以請小心溫柔。

謝謝:)

+0

可以共享URL? – 2016-11-21 14:36:36

+0

其文件://****/Test/sachin_HTML/Test%20File/204217_ca_cs_sb_fy17q4wk6_oa_sb-performance-high_fr_160x600_vr_index.html –

+0

OK我有另一個鏈接爲例:http://www.dell.com/fr/筆記本電腦?dgc = IR&cid = Q3_New_LT_Portfolio&lid = 469x208_P_homepage:_r_3_c_2_t_0 ....查看源碼查看行號:559「title =」系統d '開發「」輸出如下:「title =」Systèmed'explo「」 –

回答

0

你可以使用MSXML2作爲瀏覽器的原始HTML。 IE.responseText是未處理的HTML。只要將原始HTML加載到HTMLBody中,就會轉換特殊字符。

IE.responseText是原始文本。這意味着你將不得不手動解析它。我會建議使用RegEx這樣做。

enter image description here

Public Sub ParseMaterial() 
    Const FILE_URL = "D:\test.html" 
    Dim IE As MSXML2.XMLHTTP60 
    Set IE = New MSXML2.XMLHTTP60 

    Dim HTMLDoc As MSHTML.HTMLDocument 
    Dim HTMLBody As MSHTML.HTMLBody 

    Set HTMLDoc = New MSHTML.HTMLDocument 
    Set HTMLBody = HTMLDoc.body 

    IE.Open "GET", FILE_URL, False 
    IE.send 

    While IE.ReadyState <> 4 
     DoEvents 
    Wend 

    HTMLBody.innerHTML = IE.responseText 

    Debug.Print "HTMLBody.innerHTML" 
    Debug.Print HTMLBody.innerHTML 
    Debug.Print 
    Debug.Print "Raw HTML: IE.responseText"; 
    Debug.Print IE.responseText 
End Sub 
+0

謝謝托馬斯對此信息的有效性。 –

+0

謝謝你接受我的回答。快樂的編碼! – 2016-11-21 16:36:42

+0

Okie一個後續問題...我們可以.responsetext火.getelementbyclassname? –

相關問題