HttpWebRequest获取的代码和网页(查看源文件)不一致!
http://uk.site.sports.betfair.com/betting/LoadRunnerInfoAction.do?marketId=20515771&selectionId=201165&timeZone=PRC®ion=GBR&locale=zh_CN&brand=betfair¤cy=HKD
想获取 下面3个内容!
本赛事的总成交额: HK$1,878,362
交易总结 - 数量: HK$27,140
最近成交的赔率: 26.00
找的 一段代码
Private Function GetSource(ByVal url As String) As String
Try
Dim httpReq As System.Net.HttpWebRequest 'HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持 ',也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。
Dim httpResp As System.Net.HttpWebResponse ' HttpWebResponse 类用于生成发送 HTTP 请求和接收 HTTP 响 '应的 HTTP 独立客户端应用程序。
Dim httpURL As New System.Uri(url)
httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest)
httpReq.Timeout = 5000
httpReq.Method = "GET "
httpResp = CType(httpReq.GetResponse(), HttpWebResponse)
Dim reader As StreamReader = _
New StreamReader(httpResp.GetResponseStream, System.Text.Encoding.GetEncoding( "GB2312 ")) '如是中文,要设置编码格式为“GB2312”。
Dim respHTML As String = reader.ReadToEnd() 'respHTML就是网页源代码
Return respHTML
httpResp.Close()
Catch e As Exception
Return "网络连接失败,请重新尝试! "
End Try
end Function
问题:
1、该页面是charset= "UTF-8 ",我换成system.Text.Encoding.UTF8)还是乱码?
2、获取页面的数据,respHTML 和 用浏览器 看到的 不一样!
本赛事的总成交额: HK$1,878,362
交易总结 - 数量: HK$27,140
这 都和 浏览器 看到的不一致!
请问如何解决!谢谢!
[解决办法]
我试了一下也是乱码,不知道为什么!但你可以换一种方法解决:
先用AxWebBrowser1.Navigate(url)显示,再取源码
Private Sub AxWebBrowser1_DocumentComplete(ByVal sender As Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent) Handles AxWebBrowser1.DocumentComplete
RichTextBox1.Text = Me.AxWebBrowser1.Document.GetElementsByTagName( "html ").Item(0).OuterHtml
End Sub
[解决办法]
很明显...
人家可能用cookie保存了一些信息...
或者是用referer...
自己看着办吧...
[解决办法]
没有cookie传递,没有referer
[解决办法]
语言文化差异?
-------------------
byte[] data;
//.............
System.Globalization.CultureInfo cultrue = new System.Globalization.CultureInfo( "en-US ", false);
System.Threading.Thread.CurrentCulture = cultrue;
System.String content = System.Text.Encoding.UTF8.GetString(data);
[解决办法]
其实数据是一样的,只是货币单位不同造成的,你看到是香港货币,代码得到的是美元、。要得到香港货币,这样修改一下
httpReq.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-HK ")
如果修改一下你机器使用的不同区域,浏览器的结果也是不同的
Dim url As String = "http://uk.site.sports.betfair.com/betting/LoadRunnerInfoAction.do?marketId=20519472&selectionId=58344&timeZone=PRC®ion=GBR&locale=zh_CN&brand=betfair¤cy=HKD "
Dim httpReq As System.Net.HttpWebRequest 'HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持 ',也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。
Dim httpResp As System.Net.HttpWebResponse ' HttpWebResponse 类用于生成发送 HTTP 请求和接收 HTTP 响 '应的 HTTP 独立客户端应用程序。
Dim httpURL As New System.Uri(url)
httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest)
httpReq.Timeout = 5000
httpReq.Method = "GET "
httpReq.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-HK ")
httpReq.Headers.Add(HttpRequestHeader.AcceptEncoding, "utf-8 ")
httpReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30) "
httpResp = CType(httpReq.GetResponse(), HttpWebResponse)
Dim reader As StreamReader = New StreamReader(httpResp.GetResponseStream, System.Text.Encoding.UTF8)
Dim wr As StreamWriter = New StreamWriter( "c:\out.htm ", False, System.Text.Encoding.UTF8)
'如是中文,要设置编码格式为“GB2312”。
Dim respHTML As String = reader.ReadToEnd() 'respHTML就是网页源代码
TextBox1.Text = respHTML
wr.Write(respHTML)
wr.Close()
httpResp.Close()