2

我正在使用 vb.net 并且有一些 URL 拒绝被抓取。我真的很想检测爬网何时返回空响应,但似乎在弄清楚 HOW 时遇到了问题。

代码:

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,但似乎无法弄清楚如何检测空流:( 我只是遗漏了一些东西,但我已经到处搜索了最好的我可以找到这个线程: crawledPage.HttpWebResponse is null in Abot

但是 - 这并不能真正解释如何检测和编码结果。

4

1 回答 1

1

我遇到了同样的问题(dotnet core),通过提琴手会话,我可以看到响应确实来了。但我也看到网站返回结果需要很长时间。

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

于 2017-01-18T18:37:44.800 回答