Abot Crawler - Как обнаружить нулевой ответ
Я использую vb.net и имею несколько URL, которые отказываются сканировать. Я действительно хотел бы определить, когда сканирование возвращает нулевой ответ, но, похоже, возникла проблема с выяснением КАК.
Код:
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 является нулевым в Abot.
Однако - это не объясняет, КАК обнаруживать и кодировать результат.
1 ответ
У меня была та же самая проблема (ядро dotnet), с сеансом скрипача, я мог видеть, что ответ действительно прибыл. Но я также увидел, что сайту понадобилось много времени, чтобы вернуть результат.
Попробуйте установить для config.HttpRequestTimeoutInSeconds более высокое значение. Это решило мои проблемы.