我正在使用vb.net,并且有一些拒绝抓取的网址。我真的想检测爬行什么时候返回一个空响应,但似乎有问题弄清楚。
代码:
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
我放入Catch-Try来捕获该异常,但我真的宁愿在我的CrawlFailed子例程中将其捕获到使用该URL执行某些操作。
我试图弄清楚如何使用GetResponseStream和Stream.Null,但似乎无法弄清楚如何检测空流:(我只是遗漏了一些东西,但我&#39;我用遍布的地方搜索,我能找到的最好的就是这个帖子:crawledPage.HttpWebResponse is null in Abot。
然而 - 这并没有真正解释如何检测和编码结果。
答案 0 :(得分:0)
我有同样的问题(dotnet核心),有一个小提琴会话,我可以看到响应确实来了。但我也看到该网站需要很长时间才能返回结果。
尝试将config.HttpRequestTimeoutInSeconds设置为更高的值。它解决了我的问题。