我使用以下方法获取网页:
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
request.CookieContainer = logincookie
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
Dim reader As New StreamReader(response.GetResponseStream())
Dim thesource As String = reader.ReadToEnd我在试着从源中提取数据。源成功地保存了页面的源代码,但是,我不能使用每个循环循环遍历每一行,因为它只是用每个字符而不是每一行进行响应。
有人能建议怎么解决这个问题吗?谢谢各位斯坦。
发布于 2013-02-01 02:58:07
我有三种选择。
选项1.在While循环中逐行读取,而不是对每个循环进行读取。如果一切都将处于相同的功能中,请使用此方法。
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
request.CookieContainer = logincookie
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
Dim reader As New StreamReader(response.GetResponseStream())
Dim line As String = reader.ReadLine()
While line IsNot Nothing
'Contents of your For Each loop go here
line = reader.ReadLine()
End While选项2:您至少有Visual 2012,并且希望返回此函数的结果,以便在调用此代码的代码中使用For每个循环。
Public Iterator Function GetUrl(ByVal url As String) As IEnumerable(Of String)
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
request.CookieContainer = logincookie
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
Dim reader As New StreamReader(response.GetResponseStream())
Dim line As String = reader.ReadLine()
While line IsNot Nothing
Yield line
line = reader.ReadLine()
End While
End Function就这样说吧:
For Each line As String In GetUrl("http://example.com")
'...
Next line选项3:您想从函数返回,就像前面的选项一样,但是不能使用新的迭代器语言特性。
Public Sub GetUrl(ByVal url As String, ByVal lineAction As Action(Of String))
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
request.CookieContainer = logincookie
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
Dim reader As New StreamReader(response.GetResponseStream())
Dim line As String = reader.ReadLine()
While line IsNot Nothing
lineAction(line)
line = reader.ReadLine()
End While
End Sub就这样说吧:
GetUrl("http://example.com", _
Sub(l)
'Do stuff here
End Sub)https://stackoverflow.com/questions/14638700
复制相似问题