Grand amateur des strips de Marc Dubuisson, j’avais branché depuis pas mal d’années mon lecteur RSS sur le flux de sa série de dessins de presse Ab Absurdo (édité depuis en 3 livres chez Lapin).
Mais depuis l’été dernier, ce flux RSS restait désespérément vide. Pourtant, je vois régulièrement des nouveaux strips passer sur les réseaux sociaux.
J’ai fini par en trouver la source : la rubrique Marc Dubuisson croque l’actu sur le site belge 7sur7. Bon j’ai pas été très malin sur ce coup, j’aurais pu le trouver plus vite, puisque tous les strips publiés dessus ont un en-tête 7sur7, en-tête qu’on trouvait déjà sur les derniers strips publiés sur Ab Absurdo… Bref…
Un problème tout de même : 7sur7 se contente de publier une suite d’images sur une page web, sans flux RSS. Pas pratique donc. J’ai vite fait essayé de convertir la page en RSS avec FetchRSS et RSS.app, mais dans les deux cas je me suis heurté au message d’acceptation des cookies de 7sur7 qui bloque le contenu.
C’est donc l’occasion de refaire un peu de web scraping. Et pour le coup, j’ai pas eu trop à ma fouler 🙂 La structure de la page est toute simple, une série de <div> avec une classe CSS article__component–picture facilitant leur identification, dans chacune un lien, et une image, avec en attribut le titre. Manque juste la date de publication, que je soupçonne d’être codée dans l’identifiant à 9 chiffres de chaque image, mais que je n’ai pas réussi à décoder. Pas grave, on peut s’en passer, même si c’est un peu moins propre. Il ne manque plus qu’un coup d’outils de dev Firefox pour trouver le bon cookie à envoyer avec la requête pour ne pas avoir l’écran d’acceptation des cookies, et voilà, en quelques lignes de Python on peut générer un joli flux RSS, parfaitement digéré par TT-RSS.
Il n’y a plus qu’à croner tout ça pour mettre à jour régulièrement le flux 🙂
Si vous aussi vous voulez profiter de ces strips dans votre lecteur RSS, vous pouvez récupérer le code de scraping sur mon Gist. Il nécessite Python 3 avec les modules BeautifulSoup4, lxml et requests.