获取网页代码出错,请高手指教
vb2010吧
全部回复
仅看楼主
level 1
mysisaneryi 楼主
本人刚学VB2010,在使用下面这一段VB2010中获取网页title头的函数,在实际使用中,当所请求的网址可以正常打开时,就能正确得到TITLE头,但是当网站打不开时,函数就会出错,出错的地方是“ httpResp = CType(httpReq.GetResponse(), Net.HttpWebResponse)”,请问如何容错?(以http://www.baidu.comhttp://www.baidu.net为例,baidu.net就会出错)
Function posthtml(ByVal _URL As String) As String
Dim TitelStart, TitelEnd As Short
Dim TitelTxt As String
Dim url As String = _URL ' 网页地址
Dim httpReq As System.Net.HttpWebRequest
Dim httpResp As System.Net.HttpWebResponse
Dim httpURL As New System.Uri(url)
httpReq = CType(Net.HttpWebRequest.Create(httpURL), Net.HttpWebRequest)
httpReq.Method = "GET"
httpResp = CType(httpReq.GetResponse(), Net.HttpWebResponse)
Dim reader As IO.StreamReader = New IO.StreamReader(httpResp.GetResponseStream)
Dim respHTML As String = reader.ReadToEnd() 'respHTML就是网页源代码
TitelStart = respHTML.IndexOf("<title>") + 7
TitelEnd = respHTML.IndexOf("</title>")
TitelTxt = respHTML.Substring(TitelStart, TitelEnd - TitelStart)
Return TitelTxt
End Function
2014年02月04日 07点02分 1
level 13
为什么不用TRY?
Try
httpResp = CType(httpReq.GetResponse(), Net.HttpWebResponse)
Catch
Return String.Empty
End Try
2014年02月05日 06点02分 2
非常感谢,此问题已解决,还有一个问题,就是我是一批网址,用循环调用此函数时,会提示“Dim httpURL As New System.Uri(url)”这一句出错,如果是一个网址只调用一次时,运行很正常,这个不知道是什么原因?
2014年02月09日 14点02分
回复 mysisaneryi :不要这样使用,Net的类是这么神奇的了,有时候你调用它多了就不行了。将要用httpURL的地方全部改为url这个字符串。
2014年02月09日 15点02分
回复 百百mp3 :就是说不用这个声明“Dim httpURL As New System.Uri(url)”,然后把下面代码里的httpURL直接改成url就行了吗?新手还请多多指教
2014年02月10日 07点02分
回复 mysisaneryi :是的
2014年02月10日 10点02分
level 1
mysisaneryi 楼主
:又变成这一句出错了“httpReq = CType(Net.HttpWebRequest.Create(URL), Net.HttpWebRequest)”,提示“无效的 URI: 未能分析主机名。”,网址是绝对没有问题。调试的时候还有一个很奇怪的现象,我在一个过程里一次调用四回此函数,网址的前缀都一样(baidu.com/baidu.net/baidu.cn/baidu.com.cn)都能正常返回结果,再次用其它前缀的网址调用时,就出错了。
2014年02月10日 14点02分 3
每个网址前加http://
2014年02月10日 15点02分
level 1
mysisaneryi 楼主
回复 百百mp3 :是标准的“http:// www。xxx。com”格式,我调试时发现如果参数直接用字符串“http:// www。xxx。com”,第二次调用是正常的,但如果是用变量,str=http。// www。+字符串变量+".com",然后再把str当参数,第一次正常,第二次出错,调试时我输出str的网址是
正确的
。还请高手多多指教
2014年02月10日 16点02分 6
level 13
这种情况我没遇到过,我也不知道怎么解决,你去MsDN看看或百度看有没有解决方案
2014年02月11日 10点02分 7
吧主能不能帮忙写一段提取网页内容的代码给我学习学习呢?实在是急着用,一时半会不知道怎么解决,谢谢啦
2014年02月11日 16点02分
1