VB.NET實(shí)用教程之抓取網(wǎng)頁(yè)亂碼解決方案
VB.NET實(shí)用教程教你調(diào)試VB.Net調(diào)用Microsoft.XMLHttp組件抓取網(wǎng)頁(yè)時(shí),遇到抓取中文字符出現(xiàn)亂碼的問(wèn)題,在這里給大家仔細(xì)分析一下,舉一個(gè)小案例如下。以下為VB.Net抓取網(wǎng)頁(yè)的函數(shù)LobDotCn 注:url_Link為抓取的目標(biāo)頁(yè)面 IsGb2312為是否Gb2312字符。
VB.NET實(shí)用教程代碼:
- 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)頁(yè)
變量 = LobDotCn("此處填寫(xiě)網(wǎng)址", False) ' 抓取utf-8網(wǎng)頁(yè)
附Microsoft.XMLHttp組件的相關(guān)說(shuō)明:
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
◆bstrMethod: 數(shù)據(jù)傳送方式,即GET或POST。
◆bstrUrl: 服務(wù)網(wǎng)頁(yè)的URL。
◆varAsync: 是否同步執(zhí)行。缺省為T(mén)rue,即同步執(zhí)行,但只能在DOM中實(shí)施同步執(zhí)行。用中一般將其置為False,即異步執(zhí)行。
◆bstrUser: 用戶(hù)名,可省略。
◆bstrPassword:用戶(hù)口令,可省略。
Send( varBody )
◆varBody:指令集??梢允荴ML格式數(shù)據(jù),也可以是字符串,流,或者一個(gè)無(wú)符號(hào)整數(shù)數(shù)組。也可以省略,讓指令通過(guò)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é)果返回為無(wú)符號(hào)整數(shù)數(shù)組。
◆responseStream: 結(jié)果返回為IStream流。
◆responseText : 結(jié)果返回為字符串。
◆responseXML: 結(jié)果返回為XML格式數(shù)據(jù)。
以上就是VB.NET實(shí)用教程為你提供的一個(gè)完整的解決方法,希望對(duì)研究VB.Net抓取網(wǎng)頁(yè)或者VB.Net實(shí)現(xiàn)采集功能的朋友有所幫助。
【編輯推薦】