J'ai écrit deux scripts pour extraire les éléments titres et les
descriptions dans un fichier xml. Dans le script j'ai utilisé
deux modules, etree et re, les deux marchent tout bien pour
extraire les contenus entre les balises requis. Donc l'exercice
1 de la semaine 6 est fini. Un tag est ajouté vers ce commit
7d1c0dca. Aussi j'ai fait un update du journal ici. L'Exercice 2
– arborescence sera fini après.
Yingzi:
Pour l'exo1 j'ai utilisé 2 modules "re" et "feedparser"
finalement.
Pour le module "re", l'idée c'est extraire le titre et la
description de chaque élément du fichier XML donné, en utilisant
des expressions régulières. Le contenu du fichier est d'abord lu
en tant que chaîne de caractères, puis une expression régulière
est utilisée pour extraire chaque élément individuel. Après,
pour chaque élément , l'expression régulière du titre est
appliquée pour extraire le contenu du titre (entre les balises
), puis l'expression régulière de la description est appliquée
pour extraire le contenu de la description (entre les balises ).
Les résultats sont affichés à l'écran.
Pour le module "feedparser", je l'ai utilisé pour extraire le
titre et la description de chaque élément du fichier XML. Il
affiche également le titre et la description du flux RSS,
extraits de l'élément .
Le fichier XML est d'abord lu avec feedparser.parse() pour créer
un objet feedparser.FeedParserDict qui contient les informations
du flux RSS. Le titre et la description du flux sont extraits de
feed.feed.title et feed.feed.subtitle.
Ensuite, pour chaque élément dans le flux RSS, le titre est
extrait de entry.title et la description est extraite de
entry.summary. Les résultats sont affichés à l'écran.
l'exo 1 est fini, mais je vais les apporter des modifications
selon l'exo2 après.
17/03
Xiaohua:
J'ai compris connaissances élémentaires des modules re et etree.
Sans savoir beaucoup quoi faire avec EXO2, j'ai fait un script
qui extrait les titres et descriptions des articles dont les
éléments contiennent les codes de catégories et la date. Et ça a
marché. Mais il me semble pas très idéal parce qu'on n'arrive
pas à parcourir des fichiers XML mais se limite toujours dans un
seul fichier.
18/03
Xiaohua:
S6_exo2 fini. Le fichier python pluri_extraire_xml.py, qui
contient une nouvelle fonction, sert à filtrer les fichiers dans
tous les sous-dossiers d'un dossier radical, et trouver les
fichiers requis, dans lesquels on va utiliser la fonction dans
exo1 pour tirer les éléments_cible . Le dossier radical et donné
par l'utilisateur, ainsi que les critères de filtre (date et
catégorie). Les chemins de tous les fichiers seront mis dans le
fichier fichiers.txt, tandis que ceux des fichiers requis seront
mis dans le fichier fichiers_selected.txt. Enfin, un tag
XC-s6-e2-FIN est ajouté. Aussi, il sera mieux si l'on peut
écrire ces infos tirés dans un nouveau fichier xml. j'essayerai
après. Enfin Journal du S6 renouvelé.
Yingzi:
L'exo 2 fini. En plus d'extraire le titre, la description comme
exo 1, le script sert aussi à extraire la date de publication et
la catégorie de chaque article du fichier XML en filtrant par
catégorie et/ou date, et de sauvegarder ces informations dans un
nouveau fichier XML.
Tout d'abord, j'ai importé les modules feedparser, argparse,
datetime et xml.etree.ElementTree. Et puis je définis deux
fonctions : is_entry_category pour vérifier si l'article
appartient à la catégorie donnée, et is_entry_date pour vérifier
si l'article a été publié à la date donnée. La fonction
extract_title_description prend en entrée le chemin du fichier
XML, la catégorie à filtrer, la date à filtrer et le nom du
fichier XML de sortie. J'ai utilisé feedparser pour parser le
contenu du fichier XML et creé un élément racine pour le nouveau
fichier XML. Après parcourir tous les articles de l'objet
feed.entries,j'ai ajouté les informations correspondantes
(titre, description, date de publication et catégorie) à
l'élément racine si l'article satisfait les critères de
filtrage.
Finalement, j'ai appellé la fonction extract_title_description
avec les arguments fournis par l'utilisateur à partir de la
ligne de commande.
19/03
Xiaohua:
Enfin j'ai réussi à enregistrer les contenus tirés dans un
nouveau fichier xml xml_filtre.xml. Dans l'exemple fichier, les
contenus sont obtenu par la commande bash python
pluri_extraire_xml.py 2022 --date Dec/25 --cat sport, et le
structure est sur la page
scripts
20/03
Groupe:
Merge une branche individuelle vers la branche main, tag
s6-ex2-fin étiqueté.