2016-11-08 1 views
1

J'utilise vb.net et j'ai une poignée d'URL qui refusent d'être explorées. Je voudrais vraiment détecter quand une analyse renvoie une réponse nulle, mais semble avoir un problème pour déterminer comment.Abot Crawler - Comment détecter une réponse nulle

code:

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 

je mets dans le Catch-Essayez de capturer cette exception, mais je voudrais vraiment saisir plutôt dans mon sous-programme CrawlFailed à faire quelque chose avec cette URL.

J'ai essayé de comprendre comment utiliser GetResponseStream et Stream.Null, mais je n'arrive pas à comprendre comment détecter un flux vide :(Il me manque juste quelque chose, mais j'ai parcouru le place et le mieux que je peux trouver est ce fil:.. crawledPage.HttpWebResponse is null in Abot

Toutefois - cela n'explique pas vraiment comment détecter et le code contre le résultat

+0

'GetResponseStream et Stream.Null'? Voulez-vous dire ce problème (http://stackoverflow.com/questions/22921555/check-null-for-httpwebresponse)? Vous n'avez pas besoin de vérifier Stream.Null et cela ne fait rien. En outre, HTTP ne reconnaît pas une réponse "null" mais vous pouvez détecter un flux vide en lisant à partir de celui-ci ou éventuellement en utilisant la propriété Length. – usr

+0

J'ai lu cela, même si je viens juste de voir votre analyse finale. Puisque j'utilise Abot, je ne suis pas tout à fait sûr de la façon dont je détecte tout ce qu'il me donne comme résultat, alors? Je suis sûr que quelque chose me manque dans votre réponse @usr, peut-être pourriez-vous m'aider à comprendre? – Andrew

+0

Je ne sais rien sur Abot mais si 'crawledPage.HttpWebResponse' est de type' HttpWebResponse' alors ma réponse s'applique. Il suffit de lire à partir de ce flux pour obtenir le contenu et éventuellement le trouver vide. Si vous ne pouvez pas faire ce travail, affichez le code de lecture. – usr

Répondre

0

J'ai eu le même problème (noyau dotnet), avec session de violoniste J'ai pu voir que la réponse est bien venue, mais j'ai aussi vu qu'il fallait beaucoup de temps pour que le site renvoie le résultat.Essayez de configurer config.HttpRequestTimeoutInSeconds à une valeur plus élevée. Il a résolu mes problèmes.