Abot Crawler - 如何检测空响应

时间:2016-11-08 12:30:03

标签: vb.net web-crawler getresponsestream

我正在使用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

然而 - 这并没有真正解释如何检测和编码结果。

1 个答案:

答案 0 :(得分:0)

我有同样的问题(dotnet核心),有一个小提琴会话,我可以看到响应确实来了。但我也看到该网站需要很长时间才能返回结果。

尝试将config.HttpRequestTimeoutInSeconds设置为更高的值。它解决了我的问题。