Facecrawl
Discussion d'archives, les auteurs initiaux ont été perdu durant le transfert...
Bonjour à tous
J'ai réalisé une extension firefox pour crawler facebook et tracer le graphe du réseau des étudiants UTCéens.
Pour cela, il faut :
- Avoir un compte sur facebook et appartenir au réseau de l'UTC (sinon, faut crawler un autre network)
- Avoir firefox :D
- Installer l'extension :http://paulpoirel.is-a-geek.org/~canard/facecrawl/facecrawl.xpi
(soyez indulgents, je me suis mis à XUL ce matin, tout était en HTML/javascript avant, et je n'y connais pas grand chose)
- Lancer l'URL chrome://facecrawl/content/facecrawl.xul
- Renseigner le network et l'utilisateur (par défaut, c'est moi et le réseau de l'UTC, les ids sont dans les liens, faut chercher un peu ...)
- Lancer le crawl et aller boire un café (désactiver les images pour accelerer)
- Appuyer sur output pour générer le code gdf, qui peut donner un fichier visualisable sous guess.
Là j'ai un souci, mon PC plante dès qu'il y a un peu trop de noeuds dans guess. J'espère que vous aurez plus de chance ...
A venir :
- Export du fichier gdf directement
- Enregistrement et réouverture de session
- Un lien dans le menu de firefox dès que j'aurais appris les overlays en xul
Enjoy !
Paul
Salut Paul ! Bravo pour ton excellent travail !
Belle impression pour ton premier post sur le forum ;D
J'attend que Seb me montre jeudi car je n'ai pas de compte Facebook (j'ai pas encore vendu mon âme au diable :P)
En attendant je peux quand même te donner un petit conseil XUL. Faut bien montrer sa science de temps en temps :p
- Les noms des fonctions Javascript sont globales dans les extensions Firefox, donc ta fonction Crawl par exemple pourrait faire conflit avec une autre fonction Crawl d'une autre extension. En théorie tout de même car je n'ai jamais testé pour les scripts qui ne sont pas dans un overlay. Le mieux est donc d'encapsuler tes fonctions à l'intérieur d'objets, Crawl devient donc facecrawl.Crawl. Pareil avec tes déclarations.
- Tu peux regarder le code de Flem ou jsTechnorati aussi, il utilisent deux methodes différentes, mais c'est propre niveau JS. D'ailleurs ces deux extensions sont des bons exemples pour les overlay, les préférences, les traductions ; pas trop de code pour s'embrouiller et tout fait dans la 'norme'.
Sinon avec ton extension, il y a peu d'efforts à faire pour scrapper pleins d'infos sur les pages facebook non ? Nos amis chercheurs en sciences sociales recherche justement ce genre d'outil, je dirais même preque "recherche déséspérement".
Joli travail j'ai hâte de voir les graphes que ça donne ;)
Quand tu l'auras un peu plus fignolé il auras sa page sur web-mining.fr
Merci pour les remarques ... :)
Pour le format gdf, j'ai suivi une doc assez simple, je vais me repencher sur la question ...
EDIT : http://guess.wikispot.org/The_GUESS_.gdf_format
Apparemment, name, node1 et node2 sont de type connus, il ne faut rajouter le type que pour les identifieurs non reservés
Quant aux noms, je veux bien les mettre mais ca pose peut-être des problèmes de droit, non ? ???
En tous cas, c'est très facile de récupérer des informations diverses, il suffit de rajouter le chargement de la page profile.php et de se balader dans le DOM, ce qui n'est pas très difficile en javascript ;D
Vu qu'il fonctionne en largeur d'abord (mise en file des informations), je ne pense pas qu'il soit utile de définir une profondeur maxi, l'utilisateur n'a qu'à arréter quand il le souhaite, mais l'idéal serait de crawler un network entier pour avoir un graphe qui ressemble à quelque chose.
Je vais rajouter un petit timer aléatoire
Quant à l'interface, je vais je pense fusionner les boutons crawl et stop, un peu comme le bouton lecture/pause d'un lecteur multimédia ...
Je vais passer en objet d'ici peu, de toutes façons, il commence à y avoir trop de globales :-\
Quant à l'overlay, je vais m'y mettre, j'y suis pas encore dans mon tutoriel XUL ;D
Je pense attendre la fin des finaux pour les mises à jour :-\
Ca y est j'ai fait une petite mise à jour :
http://paulpoirel.is-a-geek.org/~canard/facecrawl/facecrawl.xpi
* Ajout d'un timer aléatoire entre chaque chargement de page pour ne pas se faire griller par facebook :-D
* Amélioration de l'interface
o Gestion du crawl : Fusion des boutons Crawl et Stop en un bouton start/pause
o Ajout dans l'interface firefox
* Encapsulation dans un objet pour éviter les interférences avec d'autres scripts
Par ailleurs, j'ai créé une page sur mon wiki concernant ce projet :
http://paulpoirel.is-a-geek.org/doku.php?id=facecrawl:facecrawl
Un petit conseil : faire super gaffe en crawlant Facebook car vous outrepassez les conditions d'utilisation.
Robert Scobble, pape de la blogosphère s'est fait bannir après avoir fait tourner un script de chez Plaxo...
Il a depuis été réintégré. Mais tout ça pour dire qu'ils font super gaffe.
Oui je me doute bien que facebook n'est pas trop d'accord avec ce que je fais.
D'un autre coté, je ne récupère aucune info personnelle, et j'ai un timer de 3 secondes en moyenne entre chaque chargement de page.
Sinon, j'ai bien bossé, et j'ai corrigé pas mal de petits bugs à la con.
Reste à gérer le timeout d'une page, et aussi les finaux, je crois ;D
Je suis actuellement en train de faire un gros crawl, j'ai crawlé environ un tiers du network ce soir, donc je pense faire un crawl intégral, le temps de réviser mon final de demain ...
EDIT:
Le crawl a planté à la fin, je pense que c'est parce qu'il avait épuisé le contenu ...
Voici le fichier gdf du network UTC sur facebook : http://paulpoirel.is-a-geek.org/~canard/facecrawl/utc.gdf
En revanche, Guess a du mal ... (faut dire que c'est la jre sur ubuntu avec un celeron ;D). J'ai tout de même réussi à faire un layout gem et un radial. On ne voit pas grand chose sur le gem, mais le radial est assez intéressant.

Il y a 1015 noeuds et 9992 liens, sachant que le network UTC compte en réalité 1072 personnes ...
Et il y a huit points qui ne devraient pas y être suite à un petit bug, mais j'ai eu la flemme de les chercher ...
Un petit conseil : faire super gaffe en crawlant Facebook car vous outrepassez les conditions d'utilisation.
Robert Scobble, pape de la blogosphère s'est fait bannir après avoir fait tourner un script de chez Plaxo...
Il a depuis été réintégré. Mais tout ça pour dire qu'ils font super gaffe.
Un petit lien en français sur l'affaire.
On va voir comment ca évoluera dans mon cas ... O0
Ca aurait pu être rigolo qu'ils virent l'ip de l'utc ;D
Hello,
I, indeed, used an automatic script last night, drawing a map of my
network (see attachments).
I have did it for a course of topology of the Internet, and did not
think that I was doing something wrong.
I did not save any personal information, neither names nor emails, but
just numeric ids.
The goal was to see the structure of the social network of my
university and to show it to an epidemiologist (does this word exist
in English ?).
I never thought at any use commercial of this.
I apologize and won't do it again ...
Sincerely yours
Paul Poirel
PS : I join the firefox extension i developped too, if you want to
have a look at it, and my data file, that you can open in a text
editor, you will see that there is no personnal information.
On Jan 18, 2008 9:11 AM, Facebook <disabled@facebook.com> wrote:
> Hello,
>
> Our systems indicate that you've been highly active on Facebook lately and viewing pages at a quick enough rate that we suspect you may be running an automated script. This kind of Activity would be a violation of our Terms of Use and potentially of federal and state laws.
>
> As a result, your account has been disabled. Please reply to this email with a description of your recent activity on Facebook. In addition, please confirm with us that in the future you will not scrape or otherwise attempt to obtain in any manner information from our website except as permitted by our Terms of Use, and that you will immediately delete and not use in any manner any such information you may have previously obtained.
>
> We reserve the right to take any appropriate action in connection with any activities that violate our Terms of Use and/or applicable laws, including termination of your account and pursuit of legal remedies.
>
> Please reply to this email.
>
> Thank you,
> Facebook Customer Support
>
>
>
Ah bah ils ont pas trainé...
Pour Guess c'est normal que ça rame, c'est de la 2D qui est de toute manière limitée queluque soit ta machine.
Pour le radial...eh bien je parie que le centre c'est le niveau 0 de ton crawl, puis on a la profondeur 1, puis 2...?
EDIT :
Bon avec Gephi il n'y a rien d'autre à dire...parce qu'un graphe sans métadonnées ne sert à rien.
@Seb : avec Gephi, ce genre de graph est affichable sans probleme je suppose? Et de maniere rapide? Parce qu'avec guess, c'est la croix et la banniere...
Ben oui c'est une histoire de secondes ;D
Mais sans métadonnées sur lesquelles appliquer des filtres, on n'y voit pas plus que ça.
Ah bah ils ont pas trainé...
Ben en fait, comme il a planté en cours de crawl (guess m'a obligé à rebooter deux fois), vers deux heures du matin, j'en ai eu marre et j'ai mis le timer à 0s, me disant qu'avec la connexion de l'UTC, j'aurais fini de crawler avant de me faire choper ;D
Mais avec un timer, je l'avais déjà pas mal lancé sans problème ...
Une manière de contourner le problème, c'est de définir une profondeur 2 et de faire exécuter le crawler par plusieurs personnes du réseau, et il ne reste plus qu'à fusionner les GDF...un crawler distribué en quelque sorte ;)
Ca sent le codage à l'arrache d'une petite appli pour fusionner des gdf tout ca ^^. Qui se lance?
@poirelpa : ils t'ont rouvert ton compte?
Non, ils ont toujours pas répondu à mon mail ... :-\
En même temps, je m'en fous un peu de mon compte facebook et je savais à quoi je m'exposais ...
Ca sent le codage à l'arrache d'une petite appli pour fusionner des gdf tout ca ^^. Qui se lance?
C'est bon je le fais, ça me détendra après le rapport de stage :o
Tu compte faire comment si pour un meme noeud on a deux meta donné différente :
genre deux utilisateurs du navicrawler font un crawl et certain noeuds sont validés par l'un et refusé par l'autre
ça ira pas jusque là, parce que je vais pas redévelopper un outil déjà prêt en interne...non ça sera juste de la fusion minimale de GDF, genre 2 que tu fais seul comme un grand.
Puisque facecrawl ne peut plus avancer (faute de compte facebook) O0, je me suis penché sur l'aspect visualisation des données.
J'ai donc essayé de coder un outil de visualisation en javascript, pour être integré directement dans facecrawl ou le navicrawler.
Je suis encore au début, mais j'ai déjà un petit truc rigolo ;D
J'ai mis en place un semblant d'algorithme spring pas encore tout à fait au point
A noter que le drag and drop sur les noeuds permet de faire des trucs très amusants, on peut transformer un héxagone en pentagone avec un point au milieu, etc ...
Pour information, c'est du SVG manipulé via le DOM en javascript
C'est très bon ! C'est une très bonne piste le SVG. Je ne sais pas si tu es au courant mais dans Firefox 3 le SVG va 10 fois plus vite :P
Ton outil est destiné à être léger et portable je pense ? d'ailleurs c'est à mon sens dans cette optique qu'il trouve toute sa place. Je dirais donc que le plus important ce n'est pas forcément la spacialisation en temps réel (même si c'est un défis tentant mais pas forcément réalisable, je ne te décourage pas de creuser néanmoins, loin de moi cette idée ;)). En revanche je pense qu'il faut que ça soit bien ergonomique et utilisable simplement.
Pour pousser un peu plus loin essaye d'imaginer un widget graphe que l'on peux intégrer à son blog pour montrer son environnement, qu'en pense-tu ? ta viz serait géniale ici
Tiens nous au courant ;) Ouvre un topic même ça serait mieux même :)
Je viens de récupérer mon compte facebook ! :)
dommage,
il faudrait faire une pétition facebook pour avoir un service équivalent à Audioscrobber :D




Flux général
Je suis en train de tester, et ça m'a l'air délicieux ! O0
Pour ceux qui cherchent leur ID facebook, elle se situe à la fin de l'url du profil : http://www.facebook.com/profile.php?id=MON_ID
Pour l'ID des réseaux, cherchez un lien menant vers l'un deux, l'id est la suite de chiffre coincée entre networks/ et le nom du réseau, par exemple pour l'UTC : http://www.facebook.com/networks/16827359/Universit_de_Technologie_de_Co...
Bon chez moi ça tiens la charge ! Mais j'ai quelques petites remarques / conseils :
Excellent travail en tout cas ! T'as mérité ton A en IC05 ;)
PS : pour Guess c'est normal, ce vieux logiciel ne supporte pas plus de 2000 noeuds, mais n'aie crainte car Gephi arrive sous peu lol :D