3 Stimmen

Scraping einer Facebook-App für Daten

Ich verwende eine Facebook-Anwendung, die eine Vielzahl von Informationen enthält, die ich gerne offline abrufen möchte. Zu diesem Zweck muss ich die Informationen aus den Webseiten in meine eigene Datenbank einlesen. Natürlich würde ich es vorziehen, die Seiten nicht manuell speichern zu müssen, sondern meine Anwendung die Seiten lesen und die relevanten Details daraus ziehen zu lassen. Leider muss ich mich zuerst bei Facebook authentifizieren, was mir den Weg versperrt. Wenn ich also diesen Code ausführe:

private static string getPage(string pageAddress)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(baseUri, pageAddress));
    HttpWebResponse response = (HttpWebResponse)req.GetResponse();
    StreamReader readStream = new StreamReader(response.GetResponseStream());
    string page = readStream.ReadToEnd();
    readStream.Close();
    response.Close(); // I know, I'm paranoid and this is likely redundant...
    return page;
}

Ich bekomme diese Antwort:

<script type="text/javascript">
if (parent != self) 
top.location.href = "http://www.facebook.com/login.php?api_key=<obscured>&canvas&v=1.0";
else self.location.href = "http://www.facebook.com/login.php?api_key=<obscured>&canvas&v=1.0";
</script>

Gibt es eine Idee, wie ich der App mitteilen kann, dass ich wirklich am das authentische Ich?

8voto

Alexey Kalmykov Punkte 1928

Soweit ich verstanden habe, müssen Sie sich nur bei der Facebook-Anwendung anmelden, richtig? Verwenden Sie ein beliebiges Web-Scraping/Crawling-Framework dafür (sie unterstützen JS, Cookies, etc.). Sie emulieren einfach das übliche Web-Browsing. Versuchen Sie zum Beispiel diese:

http://scrapy.org/

http://wwwsearch.sourceforge.net/mechanize/

http://watin.sourceforge.net/

Siehe auch

.Net Screen Scraping und Sitzung

3voto

Brian Mains Punkte 50145

Facebook verwendet REST, so dass Sie die Daten vom Server abrufen können; es hat auch die Möglichkeit, auf Daten von der clientseitigen JavaScript-API zuzugreifen. Weitere Informationen finden Sie im Wiki. Es wird eine rest_server.php?method= verwendet, um die Daten von den entsprechenden Methoden abzurufen.

Überprüfen Sie http://www.facebook.com/developers um weitere Informationen über diese Objekte/Methoden/Erstellung einer Anwendung zu erhalten, damit Sie Facebook-Daten abfragen können.

1voto

Ivo Punkte 3333

Sie müssen die Facebook-API verwenden, um Daten von Facebook zu erhalten. Sie blockieren Screenscaping

1voto

Drew LeSueur Punkte 17709

Sie müssen zunächst ein Skript schreiben, um sich programmatisch bei Facebook anzumelden. Dann müssen Sie die Cookies, die Sie erhalten, speichern.

Ich habe etwas Ähnliches mit curl und php gemacht. (curl hat eine eingebaute Cookie-Verarbeitung)

1voto

Ofri Raviv Punkte 23336

Ich denke, dass sie Cookies verwenden, um die Authentifizierung zu übergeben, so dass Sie zuerst Ihre App benötigen, um sich bei Facebook anzumelden, und halten Sie das Cookie in einem CookieContainer, dann weisen Sie, dass req.CookieContainer, und nur dann req.GetResponse();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X