私は vb.net を使用していますが、クロールを拒否する URL がいくつかあります。クロールが null 応答を返すタイミングを検出したいのですが、その方法を理解するのに問題があるようです。
コード:
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です。
ただし、それは結果を検出してコード化する方法を実際には説明していません。