R: Prüfe Existenz der URL, Probleme mit httr: GET () und url.exists ()

8

Ich habe eine Liste mit ungefähr 13.000 URLs, aus denen ich Informationen extrahieren möchte, aber nicht jede URL existiert tatsächlich. In der Tat nicht die Mehrheit. Ich habe gerade versucht, alle 13.000 URLs durch html() zu übergeben, aber es dauert eine lange Zeit. Ich versuche herauszufinden, ob die URLs wirklich existieren, bevor ich sie nach html() analysiere. Ich habe versucht, httr und GET() Funktionen sowie rcurls und url.exists() Funktionen zu verwenden. Aus irgendeinem Grund gibt url.exist() immer FALSE -Werte zurück, auch wenn die URL existiert, und die Art, wie ich GET() verwende, liefert immer einen Erfolg, ich denke, das liegt daran, dass die Seite umgeleitet wird.

Die folgenden URLs geben den Typ der Seiten an, die ich analysiere, die erste existiert nicht

%Vor%

Für GET() besteht das Problem darin, dass die zweite URL nicht existiert, aber umgeleitet wird und daher einen "Erfolg" zurückgibt.

%Vor%

Für url.exists() bekomme ich drei FALSE zurück, obwohl die erste und die dritte URL existieren.

%Vor%

Ich habe diese beiden Beiträge überprüft 1 , ​​2 < Ich würde es vorziehen, kein useragent zu verwenden, nur weil ich nicht sicher bin, wie ich meins finde oder ob es sich für verschiedene Leute ändern würde, die diesen Code auf anderen Computern benutzen. Daher macht es den Code schwerer, von anderen übernommen und verwendet zu werden. In beiden Antworten wird vorgeschlagen, GET() in httr zu verwenden. Es scheint, dass GET() wahrscheinlich die bevorzugte Methode ist, aber ich würde herausfinden müssen, wie ich mit dem Umleitungsproblem umgehen soll.

Kann jemand einen guten Weg in R vorschlagen, um die Existenz einer URL zu testen, bevor Sie sie nach html() analysieren? Ich würde mich auch für andere vorgeschlagene Arbeit für dieses Problem freuen.

UPDATE:

Nachdem ich den zurückgegebenen Wert von GET() untersucht habe, habe ich eine Arbeit gefunden, siehe Antworten für Details.

    
Adam 15.07.2015, 01:52
quelle

2 Antworten

13

Verwenden Sie für "httr" url_success() und die folgende Weiterleitung deaktiviert:

%Vor%     
hadley 20.07.2015 20:15
quelle
2

Nach einem Vorschlag von @TimBiegeleisen habe ich mir angesehen, was von der Funktion GET() zurückgegeben wurde. Es scheint, dass, wenn die URL existiert, GET() diese URL als Wert zurückgibt, aber wenn sie umgeleitet wird, wird eine andere URL zurückgegeben. Ich habe gerade den Code geändert, um zu sehen, ob die von GET() zurückgegebene URL mit der von mir eingereichten URL übereinstimmt.

%Vor%

Ich wäre daran interessiert, etwas über bessere Methoden zu lernen, die Menschen für die gleiche Sache verwenden.

    
Adam 15.07.2015 02:44
quelle

Tags und Links