medialab / hyphe

Websites crawler with built-in exploration and control web interface
http://hyphe.medialab.sciences-po.fr/demo/
GNU Affero General Public License v3.0
328 stars 59 forks source link

Export all crawled URLS #442

Open g-arcas opened 2 years ago

g-arcas commented 2 years ago

Est-il possible d'exporter la liste de toutes les URLs complètes crawlées par Hyphe ?

Je précise "complètes" parce que la fonction EXPORT de l'interface Web de Hyphe ne semble pas le faire.

boogheta commented 2 years ago

Comme l'indique la page EXPORT, celle-ci vise uniquement à exporter les métadonnées des webentités, pas de récupérer les données ni sur le réseau ni sur les pages web. À ce jour l'interface web ne permet pas d'exporter de liste de pages, cela n'est possible qu'au travers de l'API webentité par webentité : https://github.com/medialab/hyphe/blob/master/doc/api.md#pages-links-and-networks. C'est une fonctionnalité qui pourrait être utile à ajouter effectivement. Mais en attendant, si vous utilisez une instance locale de hyphe, depuis le dossier d'installation vous pouvez faire cela ainsi (depuis l'environnement python dans lequel les dépendances de hyphe ont été installées:

# Pour récupérer un fichier json contenant la liste formatée des pages crawlées de l'entité MA_WEBENTITY_ID du corpus MON_CORPUS_ID
python hyphe_backend/test_client.py store.get_webentity_pages json MA_WEBENTITY_ID True MON_CORPUS_ID > MA_WEBENTITY_ID_pages.json

# Pour récupérer un fichier texte contenant juste la liste des urls des pages crawlées de l'entité MA_WEBENTITY_ID du corpus MON_CORPUS_ID
python hyphe_backend/test_client.py store.get_webentity_pages MA_WEBENTITY_ID True MON_CORPUS_ID | grep "'url':" | awk -F "'" '{print $4}'
g-arcas commented 2 years ago

Merci, je vais tenter ça !

g-arcas commented 2 years ago

Bonjour.

Visiblement il y a un "truc" qui cloche, et je me demande si ce n'est pas parce que sur ma machine (Ubuntu 20.04) c'est python3 qui est installé par défaut. Mais en testant sur une autre machine après avoir installé python 2, je n'ai pas plus de succès. :-(

Yomguithereal commented 2 years ago

Sinon il me semble que notre outil minet a une commande hyphe dump qui correspond peut-être à ce que vous cherchez à faire: https://github.com/medialab/minet/blob/master/docs/cli.md#dump ?

g-arcas commented 2 years ago

Alors oui, c'est ce que je me suis dit et j'ai en effet installé minet. Seul "hic" : où puis-je trouver le corpus_id qu'il faut passer en paramètre ? Je trouve les webentities_id mais ce corpus_id, mystère et boules de gomme.

g-arcas commented 2 years ago

Alors en fait je confonds les deux scripts. minet me retourne no corpus existing with ID test alors que j'ai bien un corpus qui porte le nom test. Mais le "ID" me fait penser qu'il faut peut-être passer à minet l'ID du corpus et pas son nom. D'où le fait de trouver où se trouve cet ID.

boogheta commented 2 years ago

@g-arcas une fois en python2 il faut que tus utilises l'environnement python de hyphe pour avoir toutes les dépendances. Mais sinon effectivement avec minet cela devrait marcher plus simplement. Le corpus_id est le texte dans l'url de l'interface entre slash après project, par exemple dans https://hyphe.medialab.sciences-po.fr/demo/#/project/77test/overview corpus_id est 77test

g-arcas commented 2 years ago

ok, trouvé : il faut passer le nom du corpus en minuscules même si dans Hyphe il est défini en majuscules !

boogheta commented 2 years ago

id ≠ nom :)

g-arcas commented 2 years ago

Oui et en effet minet marche très bien (en plus il peut être installé sur une autre machine). C'est le "corpus-name" de l'exemple qui m'a mis sur une mauvaise piste.

Merci pour votre aide !