this post was submitted on 03 Feb 2024
1 points (100.0% liked)

Technologie - 🤖

554 readers
9 users here now

Ici concerne le champs de domaine large de la technologie : actualités sur l'informatique, partage de programme informatique et de code, montrer vos projets Arduino, ect.

Mégafil ici

founded 1 year ago
MODERATORS
 

Bonjour à tous,

Depuis la dernière mise à jour de FreshRss, il est possible de faire du scrapping de site web avec xpath afin de créer des flux rss pour les sites qui n'en n'ont pas.

Plus de détail ici : https://danq.me/2022/09/27/freshrss-xpath/

J'ai mis en place ce principe pour récupérer des infos sur le site de la mairie et celui de la com'com.

Je bloque sur un troisième, le site de l'office de tourisme (pour récupérer l'agenda culturel). J'aurais besoin d'aide afin de m'en dépatouiller. Je ne sais pas si je suis au bon endroit. Mais si vous savez vers quelle communauté je pourrais me tourner pour résoudre ce soucis, n'hésitez pas à me le dire.

Un peu de contexte.

Lors de son chargement, le site de l'office de tourisme charge dans un premier temps le html, mais sans les événements de l'agenda. Ces événements sont présents sur la page, mais dans une balise script sous forme d'un json stocké dans une variable item.

Une autre requête POST est ensuite effectuée avec en paramètre ce json pour le mettre en forme (html) puis l'insérer dans le corps de la page.

À partir de là, le scrapping se complexifie, auriez-vous une idée de comment récupérer ce json pour le transformer en quelque chose qui ressemblerais à un flux atom/rss/json ?

Je pensais faire un script bash, mais je suis un peu perdu avec xmlint, xisdel et jq.

C'est peu être un peu ambitieux, qu'en pensez-vous ?

top 6 comments
sorted by: hot top controversial new old
[–] [email protected] 1 points 10 months ago

Je crois que ça vaut le coup de l'ajouter au mégafil :)

[–] [email protected] 1 points 10 months ago (1 children)

Je l'ai eu :

curl -s https://www.office-tourisme.fr/agenda/ | grep "var items =" | sed -E 's/var items = (\[.*\]);/\1/gm;t'  | jq '{"version":"https://jsonfeed.org/version/1.1", "title":"Office de tourisme", "home_page_url": "https://example.org/", "feed_url": "https://example.org/feed.json","items": [ .[] | {id: .id, title: .titre, url: .link, content_text: .content}]}'

Il ne manque plus que FreshRss supporte jsonFeed, mais ca ne saurait tarder : https://github.com/FreshRSS/FreshRSS/pull/5662

[–] [email protected] 1 points 10 months ago
[–] [email protected] 0 points 10 months ago (1 children)

Idéalement il faudrait que ton système soit capable d'attendre la résolution de de ce script. Les outils de browser automation comme playwright on des fonctions waitfor pour ça.

Ya des choses qui m'échappe dans ton cas, la variable Item est déjà remplie dans la source du script ? Le contenu n'est pas plutôt dans la réponse de la requête post ?

Il y aurait plusieurs manière de procéder mais j'ai l'impression que ton outils freshrss est pas assez complexe pour ça.

[–] [email protected] 0 points 10 months ago (1 children)

Oui item est rempli lors du premier GET celui de la page html. Mais pas la div censé contenir les évènements est vide. Un POST est ensuite fait avec le contenu du json de la balise item.

Ca me parait très sale, bon après je suis pas dev web et je connnais pas les contraintes de dev.

Merci en tout cas, je m'y repencherais peut-être un peu plus tard, (Avec du scripting bash ou python) en attendant, j'ai scrappé les actualités des mairies alentours, mais c'est un peu moins bien, jme retrouve pollué avec des infos qui me concerne pas directement.

[–] [email protected] 3 points 10 months ago

Si c'est bien ce que tu décris, c'est juste teubé je pense, les contraintes du dev web y sont pas pour grand chose. C'est con, ton Json dans le script ça doit être grosso merdo ce que tu voudrais dans ton flux RSS...