我正在使用 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。
但是 - 这并不能真正解释如何检测和编码结果。