Ich benutze vb.net und habe eine Handvoll URLs, die nicht gecrawlt werden können. Ich würde wirklich gerne feststellen, wenn ein Crawl eine Null-Antwort zurückgibt, aber scheint ein Problem zu haben herauszufinden, WIE.Abot Crawler - So erkennen Sie Null Antwort
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
ich im setzen Fang-Versuchen diese Ausnahme zu erfassen, aber ich würde wirklich lieber erfassen es in meinem CrawlFailed Unterprogramm zu mit dieser URL etwas tun.
Ich habe versucht, herauszufinden, wie GetResponseStream und Stream.Null zu verwenden, aber kann nicht herausfinden, wie man einen leeren Stream erkennen :(Ich vermisse nur etwas, aber ich habe überall gegoogled Ort und das beste, was ich finden kann, ist dieser Thread:.. crawledPage.HttpWebResponse is null in Abot
jedoch - das nicht wirklich erklären, wie zu erkennen und zu Code gegen das Ergebnis
'GetResponseStream und Stream.Null'? Meinst du dieses Problem (http://stackoverflow.com/questions/22921555/check-null-for-httpwebresponse)? Sie müssen nicht nach Stream.Null suchen, und das macht nichts. Außerdem erkennt HTTP keine "Null" -Antwort, aber Sie können einen leeren Stream erkennen, indem Sie von ihm lesen oder möglicherweise die Length-Eigenschaft verwenden. – usr
Ich habe das gelesen, obwohl ich gerade Ihre abschließende Analyse dazu gesehen habe. Da ich Abot benutze, bin ich mir nicht ganz sicher, wie ich alles, was es mir als Ausgabe gibt, erkenne. Ich bin sicher, ich verpasse etwas aus Ihrer Antwort @ usr, vielleicht können Sie mir helfen, zu verstehen? – Andrew
Ich weiß nichts über Abot, aber wenn 'crawledPage.HttpWebResponse' vom Typ' HttpWebResponse' ist, dann gilt meine Antwort. Lies einfach aus diesem Stream, um den Inhalt zu erhalten und ihn möglicherweise leer zu finden. Wenn Sie diese Arbeit nicht machen können, schreiben Sie den Lesecode. – usr