我有HttpWebRequest的VB代码,它收集了数百个网站的html,但需要很长时间才能完成任务。代码基本上是for-to-loop并读取列表框中每个网站的html。在循环中,搜索每个网站的提取的html以查找特定单词。我想显示每个单词栏下有单词的网站列表。
For Each webAddr As String In lstbox.Items
strHtml = Make_A_Call(webAddr)
If strHtml.Contains("Keyword1") Then
..........
End If
If strHtml.Contains("Keyword2") Then
..........
End If
..........
..........
..........
..........
..........
Next
Private Function Make_A_Call(ByVal strURL As String) As String
Dim strResult As String
Dim wbrq As HttpWebRequest
Dim wbrs As HttpWebResponse
Dim sr As StreamReader
Try
strResult = ""
wbrq = WebRequest.Create(strURL)
wbrq.Method = "GET"
' Read the returned data
wbrs = wbrq.GetResponse
sr = New StreamReader(wbrs.GetResponseStream)
strResult = sr.ReadToEnd.Trim
sr.Close()
sr.Dispose()
wbrs.Close()
Catch ex As Exception
ErrMessage.Text = ex.Message.ToString
ErrMessage.ForeColor = Color.Red
End Try
Return strResult
End Function
编译代码需要将近5分钟才能完成循环。有时它无法完成。可以修改它以提高性能。请帮助提供更好的代码和建议。
答案 0 :(得分:0)
请记住,有两个独立的瓶颈:
您无法使用并行处理加快下载速度;这只能通过购买更多带宽来帮助。但是,您可以做的是确保下载和处理在不同的线程上完成。我建议做以下事情: