Bonjour,

Je travaille sur un programme de veille technologique. Donc le but de celui ci est de lire les flux RSS et de renvoyer uniquement les informations qui contiennent un des mots clés recherché. Mots clés qui sont recherchés dans le titre et la description du fichier XML. Et viens mon problème : je suis capable de repérer les mots clés mais mon programme est sensible à la casse ce qui posera quelques soucis, des informations pouvant passer à la trappe.

J'ai déjà essayé de contourner le problème en utilisant une regex en l'occurrence IGNORECASE. Mais cela n'a pas très bien marché et a occasionné d'autres erreurs y compris d'encodage. En fait surtout d'encodage. Je précise au passage que je tourne sous python 2.7 et que lire les XML j'utilise le module Universal Feedparser (qui fait ça très bien).

Voilà la partie du code concernée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
if (rss): 
	xmldoc = feedparser.parse(rss)
	if (xmldoc) :
		"""On ouvre le fichier Newsletter.txt qui va récolter le flux. Ce fichier sera ensuite lu par les fonction d'envoi par mail et d'envoir sur le serveur"""
		newsletter = open("Newsletter.txt", "w") 
 
		"""On cherche premièrement à savoir de quelle source vient le RSS"""
		source_title = xmldoc.feed.title
		print source_title #Dev
		newsletter.write (source_title.encode("utf_8") + "\n" + "\n")
 
		"""Universal Feedparser crée une liste dans qui répertorie chaque article, cette liste est la liste entries[n] qui comprends n+1 entrées (les liste sont numérotées à partir de 0). Python ne peut aller au delà de cette taille n-1. Il faut donc d'abord cherche la taille de la liste avec la fonction len"""  
		range = 0 #on initialise la variable range qui va servir pour pointer les articles 
		rangemax = len(xmldoc.entries)
		print ("nombre d'article :"), rangemax, ("\n") #dev
 
		"""On initialise une boucle while qui va parcourir la liste pour rechercher titres, description, lien, etc ...."""
		while range < rangemax:
			post_title = xmldoc.entries[range].title
			post_description = xmldoc.entries[range].description
			post_link = xmldoc.entries[range].link
			keyword = u"Google"
 
			if keyword in post_title:
				print post_title.encode("utf_8") #Dev
				print post_link, ("\n") #Dev
				print ("range:"), range, ("\n") #Dev
				newsletter.write (post_title.encode("utf_8") + "\n" + post_link.encode("utf_8") + "\n" + "\n")
 
			elif keyword in post_description:
				print post_title.encode("utf_8") #Dev
				print post_link, ("\n") #Dev
				print ("range:"), range, ("\n") #Dev
				newsletter.write (post_title.encode("utf_8") + "\n" + post_link.encode("utf_8") + "\n" + "\n")	
 
			range = range+1 #On incrémente le pointeur range qui nous sert aussi de compteur
 
		newsletter.close()
Je précise que je n'ai pas encore implémenté le multi-source et le multi-keyword. C'est pour ça que c'est encore un peu simple.

Merci beaucoup et bonne journée !