VB.NET實用教程之抓取網(wǎng)頁亂碼解決方案
VB.NET實用教程教你調(diào)試VB.Net調(diào)用Microsoft.XMLHttp組件抓取網(wǎng)頁時,遇到抓取中文字符出現(xiàn)亂碼的問題,在這里給大家仔細分析一下,舉一個小案例如下。以下為VB.Net抓取網(wǎng)頁的函數(shù)LobDotCn 注:url_Link為抓取的目標頁面 IsGb2312為是否Gb2312字符。
VB.NET實用教程代碼:
- Public Function LobDotCn(ByVal url_Link As String, ByVal IsGb2312 As Boolean)
- On Error Resume Next
- Dim XmlHttp As Object
- XmlHttp = CreateObject("Microsoft.XMLHttp")
- XmlHttp.Open("POST", url_Link, False)
- XmlHttp.Send()
- Dim WebContent As Object
- Dim Str_WebContent As String
- If IsGb2312 Then
- WebContent = XmlHttp.ResponseBody
- Str_WebContent = System.Text.Encoding.Default.GetString(WebContent)
- Else
- WebContent = XmlHttp.ResponseText
- Str_WebContent = WebContent.ToString
- End If
- XmlHttp = Nothing
- LobDotCn = Str_WebContent
- End Function
調(diào)用方式 :
變量 = LobDotCn("http://www.lob.cn", True) '抓取 Gb2312網(wǎng)頁
變量 = LobDotCn("此處填寫網(wǎng)址", False) ' 抓取utf-8網(wǎng)頁
附Microsoft.XMLHttp組件的相關(guān)說明:
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
◆bstrMethod: 數(shù)據(jù)傳送方式,即GET或POST。
◆bstrUrl: 服務(wù)網(wǎng)頁的URL。
◆varAsync: 是否同步執(zhí)行。缺省為True,即同步執(zhí)行,但只能在DOM中實施同步執(zhí)行。用中一般將其置為False,即異步執(zhí)行。
◆bstrUser: 用戶名,可省略。
◆bstrPassword:用戶口令,可省略。
Send( varBody )
◆varBody:指令集。可以是XML格式數(shù)據(jù),也可以是字符串,流,或者一個無符號整數(shù)數(shù)組。也可以省略,讓指令通過Open方法的URL參數(shù)代入。
◆setRequestHeader( bstrHeader, bstrvalue )
◆bstrHeader:HTTP 頭(header)
◆bstrvalue: HTTP 頭(header)的值
如果Open方法定義為POST,可以定義表單方式上傳:
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")
XMLHTTP屬性:
◆onreadystatechange:在同步執(zhí)行方式下獲得返回結(jié)果的事件句柄。只能在DOM中調(diào)用。
◆responseBody: 結(jié)果返回為無符號整數(shù)數(shù)組。
◆responseStream: 結(jié)果返回為IStream流。
◆responseText : 結(jié)果返回為字符串。
◆responseXML: 結(jié)果返回為XML格式數(shù)據(jù)。
以上就是VB.NET實用教程為你提供的一個完整的解決方法,希望對研究VB.Net抓取網(wǎng)頁或者VB.Net實現(xiàn)采集功能的朋友有所幫助。
【編輯推薦】