Weboob (Web Outside Of Browsers) est une bibliothèque et un ensemble d'applications interagissant avec des sites web.
Plus d'un an après la sortie de la première version stable de weboob, nous sommes heureux de vous annoncer la sortie de weboob 1.1.
Pour rappel, weboob est une bibliothèque permettant d’accéder à près de 200 sites web en ligne de commande ou avec des applications graphiques spécialisées.
Débuté par un simple script permettant d'automatiser certaines actions sur un célèbre site de rencontre, c'est désormais une communauté conséquente (plus de 100 contributeurs depuis le début du projet), qui maintient quotidiennement l'ensemble des modules.
Depuis toutes ces années, weboob est devenu un hub interopérable permettant à de multiples applications de récupérer, croiser et présenter des données issus de sites tiers. Tant et si bien, qu'il est fort possible que vous ayez déjà utilisé weboob sans le savoir au travers des entreprises suivantes : Cozycloud, Budget Insight, Winancial, ou d'autres projets libres : Skrooge, Kmymoney, GTranslate, Gnome Shell, un greffon pour XMBC/Kodi, Kresus, hinance.
La nouvelle version 1.1 est exceptionnelle pour le projet. Le cycle de développement a duré plus d'un an (contre une moyenne entre 3 et 4 mois habituellement), et cette version inclut donc plus de 1200 commits écrits par 35 contributeurs. S'il n'y a pas de fonctionnalité impressionnante à mettre en avant, les changements sont très nombreux et cette dépêche se propose d'en évoquer quelques-uns.
Sommaire
Nouveautés depuis la 1.0
Cap sur le patrimoine
La récupération d'informations bancaires est une des premières fonctionnalités de weboob, et probablement la plus populaire en France. Il s'agit également de la capability la plus stable, de part les contributions importantes de Budget Insight (qui représentent 58% des commits de cette version).
Si tous les modules permettent depuis longtemps la récupération des comptes simples (comptes courants, comptes sur livret), seuls quelques modules permettaient de récupérer des informations plus détaillés sur des comptes financiers plus complexes (comptes titres et PEA, assurance vie, etc.). Cette fonctionnalité est désormais présente sur plus d'une dizaine de modules, et cette diversification a permis également d'améliorer la qualité des outils l'utilisant (meilleur affichage dans l'application boobank, meilleure documentation des champs récupérés, etc).
Des modules permettant de gérer des cartes de crédits (surtout pour les USA, avec notamment les cartes Amazon Store et Victoria's Secret) ont également fait leur apparition. Ces modules ont conduit à l'ajout de nouveaux attributs pour les comptes, comme la date du prochain paiement pour la carte de crédit, le montant minimal de paiement et la limite de crédit.
Enfin, l'épargne salariale se retrouve renforcée dans weboob avec le module s2e qui permet d'accéder aux informations des sites Esalia, Capeasi, BNP Épargne entreprise et HSBC Épargne entreprise.
Une commande « weboob »
La diversité des interactions possibles avec les sites web a conduit au développement de nombreuses applications (44 actuellement) dans le cadre de weboob. Leurs noms ne sont pas toujours simples à retenir, et il est courant pour un nouvel utilisateur d'installer Weboob puis de se demander quoi faire pour l'utiliser.
Dans le but d'améliorer cette première approche, une commande « weboob » permet à présent d'accéder facilement aux applications disponibles pour exploiter une capability (un ensemble de fonctionnalités communes, respectant une interface définie). Par exemple, weboob bank
lancera boobank, et weboob video
offrira le choix entre qvideoob
et videoob
. De plus, l'application permet de lister les capabilities disponibles.
Shopoob
En parlant d'applications et de noms à retenir, une nouvelle application a été ajoutée : [shopoob], vous permettant de lister et extraire vos commandes de sites marchands. Vous pouvez ainsi accéder au site d'Amazon, d'ideel, de MyHabit et de Victoria's Secret.
Du côté des développeurs
Asynchrone
Le support des requêtes asynchrones a été ajouté au Browser
.
Concrètement, cela permet de faire des requêtes HTTP sans bloquer l'exécution, dans le but d'en faire plusieurs en parallèle. Pour cela, on utilise le module concurrent.futures
rétroporté de Python 3. Le nombre de requêtes exécutées en parallèle peut être limité afin de ne pas surcharger le serveur distant.
Plusieurs modules utilisent déjà la fonctionnalité, notamment pour aller sur toutes les pages de détail d'une liste (ce qui est d'autant plus facilité par le filtre AsyncLoad
). Le parcours en est devenu significativement plus rapide.
L'utilisation est très simple, au lieu de :
page = browser.open(...)
On peut faire :
page_future = browser.async_open(...)
page = page_future.result()
Seul l'appel à result()
est bloquant. Il est aussi possible de fournir un callback.
Quand on utilise les filtres, on peut faire :
class iter_list(ListElement):
class item(ItemElement):
load_details = Link(...) & AsyncLoad # URL de la sous-page à charger
obj_truc = Async('details') & CleanText('./p[@class="truc"]') # le filtre CleanText sera appliqué sur la sous-page récupérée
Des outils pour les API
Avec l'avènement des frameworks JavaScript tels que backbone.js ou angular.js, de plus en plus de sites web sont construits sous une forme d'API renvoyant du JSON. De même, beaucoup disposent d'applications mobiles qui interagissent avec une API.
Même si ça constitue une avancée inconsciente en terme d'accès aux données, puisqu'elles sont récupérées sous forme structurée, cela n'enlève pas l'intérêt de weboob, qui est d'agréger les informations depuis plusieurs sources et de les renvoyer dans un modèle de données unifié.
De fait, une classe APIBrowser a été rajoutée, ainsi que des filtres permettant de parser le JSON de façon similaire aux filtres CSS ou XPath.
Persistance des sessions
Les modules peuvent désormais sauvegarder leur état (page courante, cookies, ou plus si le module décide d'étendre le mécanisme) afin d'éviter de repasser par l'étape de connexion à chaque lancement. La fonctionnalité est encore à un stade expérimental, les modules devant être vérifiés auparavant.
L'intérêt initial était de permettre au module Boursorama de conserver le cookie validant l'authentification à deux facteurs (par confirmation SMS) imposée lors d'une connexion depuis un nouveau lieu.
Futur
La version 1.1 est la dernière à supporter Python 2.6. En effet, cette version est de plus en plus rare et est rarement testée. Cela permettra aussi d'améliorer la compatibilité avec Python 3.
La prochaine version 1.2 devrait sortir dans deux ou trois mois, de beaux changements sont déjà intégrés dans la branche de développement, notamment le portage à Qt5 de toutes les applications graphiques.
Soirée Weboob
Cela fait maintenant six ans que Weboob existe, et nous organisons comme il se doit une soirée pour réunir les membres de la communauté. Elle aura lieu lundi 15 février 2016 au Hall's Beer Tavern, à Paris. Plus d'informations sur l'agenda du libre.
Contributeurs
Merci aux contributeurs qui ont participé à cette version :
- Alexandre Morignot
- Baptiste Delpey
- Benjamin Bouvier
- Benjamin Carton
- Caram Dache
- Cédric Félizard
- Christophe Lampin
- Florent Fourcot
- Grant Tzabro
- Guilhem Bonnefille
- James Galt
- Jean-Philippe Dutreve
- Johann Broudin
- juliaL03
- Julien Veyssier
- Laurent Bachelier
- Loic Bontonou
- Lucas Nussbaum
- Matthieu Weber
- Mickaël Thomas
- Mr Tchuss
- nojhan
- Oleg Plakhotniuk
- P4ncake
- Pierre-Louis Bonicoli
- Pierre Mazière
- Raphaël Rigo
- Roger Philibert
- Romain Bignon
- RouxRC
- Samuel Loury
- Simon Muraïl
- Vincent A
- Vincent Paredes
- Vincent Texier
Weboob est un projet qui grossit et qui vit grâce à ses contributeurs. Si vous souhaitez l’améliorer, que vous connaissiez le Python ou pas, n’hésitez pas à contribuer.
Aller plus loin
- Site Web (757 clics)
- Liste complète des changements (206 clics)
- Planet Weboob (409 clics)
- Documentation développeur (188 clics)
- Association Weboob (238 clics)
# Weboob dans la vie courante
Posté par gUI (Mastodon) . Évalué à 10.
J'utilise Weboob comme un bon élève (banque), mais plusieurs fois je me suis surpris à vouloir dumper des données sur un site web (exemple : la gestion des bugs au boulot) et j'ai de suite pensé à weboob.
Est-ce qu'il y en a qui l'utilisent par exemple pour s'éviter le fameux parsing HTML que n'importe quel script doit se tenter à un moment ou à un autre ? Est-ce qu'on peut s'écrire un petit module/capability en 1h ou est-ce qu'il faut se plonger dans le hacking lourd ?
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Weboob dans la vie courante
Posté par barmic . Évalué à 10.
Je n'utilise pas weboob, mais j'ai déjà utilisé leur browser (browser2) pour ce genre de choses et ça marche pas mal.
Il y a une série de billet de blog en français sympa pour s'y mettre : https://people.symlink.me/~rom1/blog/weboob/Browser2_:_Introduction.html?view=blog
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Weboob dans la vie courante
Posté par gUI (Mastodon) . Évalué à 3.
Merci pour le lien !
Bon cela dit, je coinche un peu le "pour s'y mettre", vu qu'il est orienté "les nouveautés du Browser2". Vu que je connais pas le "Browser1", c'est pas tout à fait ce que je cherche.
Mais yapuka mettre un peu les mains dans le cambouis, le fait de m'orienter sur Browser2 est déjà une bonne info.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Weboob dans la vie courante
Posté par laurentb (site web personnel) . Évalué à 10.
Je confirme que c'est possible, nous sommes plusieurs à utiliser Browser directement pour des petits programmes jetables.
Il y a sûrement un tutoriel à écrire, en attendant :
En bonus, activer le logging est très utile.
# Soirée Weboob au HB.
Posté par freak0 . Évalué à 2.
Petite question d'orga, avez-vous privatisé la Taverne ?
Sinon, je tombe sur cette annonce un peu tard et je vais voir pour me libérer. Si Roger Philibert en est, je ferais l'effort de ma présence.
Enfin, juste pour dire que c'est un très bon projet, qui prend de l'ampleur. Bravo aux contributeurs.
[^] # Re: Soirée Weboob au HB.
Posté par Florent Fourcot . Évalué à 6.
La communauté parisienne de Weboob n'est pas (encore ?) assez grande pour privatiser la taverne :-) On a pu en tout cas y croiser plusieurs incarnations de Roger Philibert.
[^] # Re: Soirée Weboob au HB.
Posté par moules . Évalué à 7.
Nous avons tout de même privatisé la terrasse !
# Pub déguisée
Posté par El Titi . Évalué à -10.
Y'aurait moyen de ne pas rendre les liens vers des sites fermés non cliquables (voir de ne pas les citer).
Sinon ceci s'apparente à du publi-reportage et devrait donc figurer dans les journaux.
Ou alors toutes les boîtes qui utilisent git ont le droit de faire leur pub ici ?
Merci !
[^] # Re: Pub déguisée
Posté par Adrien . Évalué à 7.
C'est quoi un site « fermé » ? Et un lien non cliquable ??
[^] # Re: Pub déguisée
Posté par barmic . Évalué à 9. Dernière modification le 15 février 2016 à 18:41.
Globalement je ne vois pas ce qu'il y a de gênant à montrer qu'une entreprise utilise du logiciel libre. C'est très bon pour les utilisateurs de logiciels libres comme toi.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Pub déguisée
Posté par Florent Fourcot . Évalué à 10.
Quelques petites précisions sur la rédaction de cette dépêche :
[^] # Re: Pub déguisée
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Corrigé, merci.
# Fini l'aigritude
Posté par Exosta . Évalué à 4. Dernière modification le 15 février 2016 à 21:41.
Avant j'étais aigri, je devais passer par le nouveau site de la BNP Paribas et me perdre 5 minutes à chaque connexion pour retrouver l'historique de mon compte. Des cauchemars à foison et autant de cachetons. Maintenant, un petit
et tout va bien dans le meilleur des mondes. La panacée serait de pouvoir faire en une seule commande boobank history numerocompte@bnporc comme indiqué sur la page http://weboob.org/applications/boobank mais ça ne fonctionne pas… J'ai peut-être mal interprété la commande ceci dit.
Mais tout de même, merci. Mille mercis.
[^] # Re: Fini l'aigritude
Posté par theocrite (site web personnel) . Évalué à 7.
Pour voir l'ID à utiliser, il faut utiliser boobank en mode cli.
Ensuite, il faut réutiliser l'un de ces ID dans ta ligne de commande :
Chez moi ça fonctionne plutôt bien.
# Filtres CSS ?
Posté par Moonz . Évalué à 4. Dernière modification le 16 février 2016 à 09:31.
Justement, comment ça marche les filtres CSS ?
Je suis en train de regarder par quoi remplacer mes scripts de scrapping qui traînent à gauche et à droite, en en réécrivant avec scrapy/weboob.browser. Et je dois dire que autant je préfère de loin le design général de weboob.browser, autant xpath me donne de l’urticaire. Par exemple, comment remplacer les sélecteurs xpath par des sélecteurs css dans l’exemple de la doc ?
(pourquoi xpath pue objectivement la merde pour le scraping ? parce que le sélecteur pour
balance
par exemple ne fonctionnera pas sur<td class="closed-account balance numeric">
. En xpath pour sélectionner une classe c’est[@class and contains(concat(' ', normalize-space(@class), ' '), ' balance ')]
)M’enfin toujours est-il que j’arrive pas à trouver quelque chose qui se rapproche de la simplicité de la mini lib que je m’étais faite (qui a par contre l’inconvénient d’être mal testée et bugguée à mort), je trouve ça un peu décevant :(
[^] # Re: Filtres CSS ?
Posté par moules . Évalué à 9.
Salut,
Pour utiliser un sélecteur CSS, tu peux faire :
Sinon, dans weboob on a rajouté une fonction xpath
has-class
qui permet de faire :[^] # Re: Filtres CSS ?
Posté par laurentb (site web personnel) . Évalué à 7.
On préfère historiquement le XPath car il est beaucoup plus puissant. Cependant dans les cas simples, c'est moche, et c'est plus difficile d'accès.
À noter que l'on a ajouté la fonction
has-class(class)
au langage XPath, qui équivaut au.class
des sélecteurs CSS. C'était de loin le plus gros défaut.[^] # Re: Filtres CSS ?
Posté par Moonz . Évalué à 3.
Merci à vous deux pour vos réponses :)
Pourquoi du coup ne pas avoir mis CSS par défaut et une fonction XPath quand on a besoin de cette puissance plutôt que l’inverse ?
# videoob
Posté par remyd1 . Évalué à 2.
Bonjour,
J'ai utilisé pas mal weboob pendant un temps, essentiellement pour videoob, mais j'eu de nombreux soucis avec les backends, du coup j'ai arrêté de l'utilisé. A noter que j'utilisais généralement la version des dépôts. C'est dommage, je trouvais que c'était très pratique. Par ailleurs, ça dérive un peu du sujet, mais un portage sur android serait top ;)
Cordialement
```
# Uninstall ? Remove ?
Posté par jeanyves . Évalué à 2.
Je voudrais refaire proprement mon installation weeboob et je m'aperçois que je ne trouve pas le moyen propre de faire une désinstallation.
Pas vu la commande "uninstall" ou "remove" ou …. ni parmi les fichiers installés, ni sur le site Web de l'appli.
Quelle est la bonne méthode (sachant que j'ai fait une install via ''./setup.py install'' (car pas de package sous Fedora) ?
Merci
[^] # Re: Uninstall ? Remove ?
Posté par BAud (site web personnel) . Évalué à 4. Dernière modification le 19 février 2016 à 23:16.
tu peux bénéficier du paquet à jour sur Mageia :
http://madb.mageia.org/package/show/application/0/release/cauldron/name/weboob
si tu le souhaites, je pourrai te fournir le src.rpm te permettant de faire le
rpmbuild -ba
qui a des couettes.de rien, la collaboration entre distro est dans les gènes de Mageia :-)
# Homebrew sous Mac non mentionnée ?
Posté par HEINRICH Yannick (site web personnel) . Évalué à 1.
Y a t'il une raison particulière pour laquelle l'installation de sous Mac via
homebrew
n'est pas mentionnée ?[^] # Re: Homebrew sous Mac nonmentionnée?
Posté par Juke (site web personnel) . Évalué à 3.
Le site web est sur git : git://git.symlink.me/pub/weboob/website.git
les contributions sont les bienvenues.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.