我正在使用vb.net,并且有一些拒绝爬行的URL。我真的很想检测爬行何时返回空响应,但似乎有一个问题,弄清楚如何。
代码:
Public Sub crawler_ProcessPageCrawlCompleted(sender As Object, e As PageCrawlCompletedArgs)
pageNumber += 1
Try
Dim crawledPage As CrawledPage = e.CrawledPage
If (Not (crawledPage.HttpWebResponse Is Nothing) And Not (crawledPage.WebException Is Nothing)) Or crawledPage.HttpWebResponse.StatusCode <> HttpStatusCode.OK Then
CrawlFailed(e.CrawledPage.ToString, Failed)
Else
If String.IsNullOrEmpty(crawledPage.Content.Text) Then
CrawlFailed(e.CrawledPage.ToString, NoContent)
Else
StoreContent(e)
End If
End If
Catch ex As Exception
RichTextBox1.AppendText(e.CrawledPage.ToString & " - " & ex.Message & vbCrLf)
End Try
End Sub我输入了捕捉--尝试捕获异常,但我更愿意在我的CrawlFailed子程序中捕获它,以便对该URL执行一些操作。
我试图弄清楚如何使用GetResponseStream和Stream.Null,但似乎找不出如何检测空流:(我只是遗漏了一些东西,但我搜索遍了所有地方,我能找到的最好的就是这个线程:crawledPage.HttpWebResponse is null in Abot )。
然而,这并不能真正解释如何根据结果进行检测和编码。
发布于 2017-01-18 18:37:44
我也有同样的问题(dotnet ),我可以看到,在一个小提琴会话中,响应确实出现了。但我也看到网站需要很长时间才能返回结果。
尝试将config.HttpRequestTimeoutInSeconds设置为更高的值。它解决了我的问题。
https://stackoverflow.com/questions/40487022
复制相似问题