Scraping, Daten von Facebook mit Python
Ich versuche schon seit mehreren Tagen (erfolglos) zu kratzen Städten von über 500 Facebook-URLs. Jedoch, Facebook behandelt seine Daten in eine sehr seltsame Weise, und ich kann nicht herausfinden, was Los ist unter der Haube zu verstehen, was ich tun muss.
Im wesentlichen das problem ist, dass Facebook zeigt sehr unterschiedliche Mengen an Daten, je nachdem, wer angemeldet ist und was die Privatsphäre-Einstellungen des Kontos sind. Zum Beispiel, versuchen Sie, öffnen Sie die folgenden drei links, die beide in einem browser, in dem Sie angemeldet sind, Facebook, und eine, wo Sie nicht sind:
- http://www.facebook.com/100004210542493
- http://www.facebook.com/100000802680038
- http://www.facebook.com/100001200731989
Wie Sie sehen können, Facebook lädt die Daten in beiden Fällen für den ersten link, sondern bekommt nur die Daten für das zweite link, wenn Sie sich angemeldet haben (mit einem account). Der Dritte link zeigt die Stadt, wenn Sie eingeloggt sind, zeigt jedoch nur weitere Informationen, wenn Sie es nicht sind.
Der Grund dafür ist äußerst problematisch (und im Zusammenhang mit Python) ist, dass, wenn Sie versuchen, kratzen Sie die Seite mit Schöne Suppe oder Mechanisieren, ich kann nicht herausfinden, wie man das Programm zu "behaupten", dass ich einem Konto angemeldet. Dies bedeutet, dass ich kann leicht abrufen von Daten aus dem ersten link (von denen es weniger als 10), aber ich Schaffe es nicht, die Stadt aus der zweiten oder Dritten Art. Bisher habe ich versucht eine Reihe von Lösungen, mit wenig Erfolg.
Hier einige Beispiel-code, der funktioniert die erste Art, nicht aber für andere Arten:
import mechanize
import re
import csv
user_info = []
fb_url = 'http://www.facebook.com/100004210542493'
br = mechanize.Browser()
br.set_handle_robots(False)
br.open(fb_url)
all_html = br.response().get_data()
print all_html
city = re.search('fsl fwb fcb">(.+?)</a></div><div class="aboutSubtitle fsm fwn fcg', all_html).group(1)
user_info = [fb_url, city]
print user_info
Ich habe auch eine version, die verwendet Schöne Suppe. Wenn jemand irgendwelche Ideen auf, wie man das umgehen kann, wäre ich sehr dankbar. Danke!
InformationsquelleAutor cscanlin | 2013-09-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Recht Weg, dies zu tun, ist die Verwendung der facebook-API. Für die verschiedenen Geschäfts -, Sicherheits-und Privatsphäre-Gründen Sie gehen aus dem Weg, um Schaben von Daten schwierig.
Wenn Sie darauf bestehen, auf dem schrammte ich würde versuchen, sich zuerst mit mechanize, das Formular zu senden. Ich habe nie versucht, dies zu tun mit facebook, aber eine Menge von websites einfacher zu analysieren Versionen für mobile Benutzer an m.site.com.
"facebook ermöglicht es Ihnen nicht um den Zugang eines Benutzers Stadt, es sei denn, der Benutzer gibt ausdrücklich erlaubt." – ja, es heißt Datenschutz, bitte schauen Sie. "wissen Sie, jeder Weg, um dieses" – so werden Sie explizit gefragt, wie gegen die Privatsphäre der Anwender ...?
Es ist lustig und etwas schmerzhaft Rückblick auf diese Frage Jahre später. Anyways ich erkannte, dass ich nie akzeptiert, eine Antwort, und das ist die beste Antwort auf die Frage. Also danke für die Hilfe eine fehlgeleitete noobie!
Nein, die fb nicht alle nützlichen Funktionen in Ihre api, also Sie lassen uns keine Wahl. Downvoted.
Nein, der Benutzer hat, um zu bewirken, dass diese info ja es ist öffentlich. Als Benutzer können Sie sehen, dieses also, was ist der Unterschied in der Vermietung der api verfügbar machen? Facebook und die Privatsphäre nicht mischen, falls Sie es noch nicht bemerkt hast.
InformationsquelleAutor James Robinson
Sollten Sie schauen, in mit facepy von Johannes Gorset. Er hat einen Brillanten job gemacht. Ich habe es, wenn ich gearbeitet habe eine kleine Facebook-app für ein persönliches Projekt.
Haben Sie vergleichen facepy vs facebook-sdk? Ich werde versuchen, wählen Sie die beste Bibliothek im moment..
InformationsquelleAutor Rohit
Ich denke, scraping, Daten von facebook ist illegal. Es wird dort in den Nutzungsbedingungen facebook. Jede Aktivität eingetragen ist, mit Ihren login-Daten, auch wenn Sie einen bot benutzen zu kratzen. Wenn gefangen, können Sie Euch bannen von der Verwendung von facebook für Ihr Leben lang. Wenn es eine potenzielle Bedrohung für jedes asset, die Sie darstellen können, Sie können Sie zu bestrafen, weiter.
InformationsquelleAutor TNT
Können Sie versuchen, mit Selen und Facebook-API. Ich musste auch kratzen einige ähnliche Daten aus der Liste der Prüf-Facebook-accounts und selenium webdriver geholfen zu emulieren, wie Reale Benutzer und kratzen Sie die erforderlichen Daten ein.
InformationsquelleAutor shashivs