VB.Net抓取网页乱码的解决方法

在调试VB.Net调用Microsoft.XMLHttp组件抓取网页时,遇到了抓取中文字符出现乱码,经测试若网页meta标签charset为utf-8的网页不会乱码,而charset为Gb2312的则会出现乱码,本文提供了一个完整的解决方法,希望对研究VB.Net抓取网页或者VB.Net实现采集功能的朋友有所帮助。

以下为VB.Net抓取网页的函数LobDotCn  注:url_Link为抓取的目标页面 IsGb2312为是否Gb2312字符

  1.  Public Function LobDotCn(ByVal url_Link As StringByVal IsGb2312 As Boolean)  
  2.         On Error Resume Next
  3.         Dim XmlHttp As Object
  4.         XmlHttp = CreateObject("Microsoft.XMLHttp")
  5.         XmlHttp.Open("POST", url_Link, False)
  6.         XmlHttp.Send()
  7.         Dim WebContent As Object
  8.         Dim Str_WebContent As String
  9.         If IsGb2312 Then
  10.                WebContent = XmlHttp.ResponseBody
  11.                Str_WebContent = System.Text.Encoding.Default.GetString(WebContent)
  12.         Else
  13.                WebContent = XmlHttp.ResponseText
  14.                Str_WebContent = WebContent.ToString
  15.         End If
  16.         XmlHttp = Nothing
  17.         LobDotCn = Str_WebContent
  18. End Function

调用方式 :

        变量  = LobDotCn("http://www.lob.cn", True)   '抓取 Gb2312网页     

        变量  = LobDotCn("此处填写网址", False)    ' 抓取utf-8网页


附Microsoft.XMLHttp组件的相关说明:

Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
bstrMethod:  数据传送方式,即GET或POST。
bstrUrl:     服务网页的URL。
varAsync:   是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。
bstrUser:    用户名,可省略。
bstrPassword:用户口令,可省略。
 
Send( varBody )
varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。
 
setRequestHeader( bstrHeader, bstrvalue )
bstrHeader:HTTP 头(header)
bstrvalue: HTTP 头(header)的值

如果Open方法定义为POST,可以定义表单方式上传:
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded") 
 
XMLHTTP属性:
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。
responseBody:    结果返回为无符号整数数组。
responseStream:   结果返回为IStream流。
responseText :    结果返回为字符串。
responseXML:    结果返回为XML格式数据。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值