J'ai sauvegardé mon blog au format XML de Google. C'est assez long. Jusqu'à présent, je l'ai fait:comment nettoyer toutes les entrées d'un flux feedparser
>>> import feedparser
>>> blogxml = feedparser.parse('blog.xml')
>>> type(blogxml)
<class 'feedparser.FeedParserDict'>
Dans le livre que je lis, l'auteur fait ceci:
>>> import feedparser
>>> llog = feedparser.parse("http://languagelog.ldc.upenn.edu/nll/?feed=atom")
>>> llog['feed']['title'] u'Language Log'
>>> len(llog.entries) 15
>>> post = llog.entries[2]
>>> post.title u"He's My BF"
>>> content = post.content[0].value
>>> content[:70] u'<p>Today I was chatting with three of our visiting graduate students f'
>>> nltk.word_tokenize(nltk.html_clean(content))
Et cela fonctionne pour moi sur une base entrée par entrée. Comme vous pouvez le voir, j'ai déjà un moyen de nettoyer le HTML en utilisant le NLTK. Mais ce que je veux vraiment, c'est récupérer toutes les entrées, les nettoyer du HTML (que je sais déjà comment faire et ne pas demander comment faire, lire la question un peu plus attentivement s'il vous plait), et les écrire dans un fichier chaîne de texte en clair. Ce qui a plus à voir avec l'utilisation de feedparser correctement. Y a-t-il un moyen simple de faire cela?
Mise à jour:
Je ne suis toujours pas plus près, il se trouve, de trouver un moyen facile de le faire. En raison de mon incompétence avec Python, j'ai été forcé de faire quelque chose d'un peu moche.
C'est ce que je pensais que je ferais:
import feedparser
import nltk
blog = feedparser.parse('myblog.xml')
with open('myblog','w') as outfile:
for itemnumber in range(0, len(blog.entries)):
conts = blog.entries[itemnumber].content
cleanconts = nltk.word_tokenize(nltk.html_clean(conts))
outfile.write(cleanconts)
Alors, je vous remercie beaucoup, @Rob Cowie, mais votre version (qui ressemble beaucoup) ne fonctionne pas. Je me sens mal de ne pas l'avoir signalé plus tôt et d'avoir accepté la réponse, mais je n'ai pas beaucoup de temps pour travailler sur ce projet. Les choses que je mets ci-dessous sont tout ce que je pourrais obtenir pour travailler, mais je laisse cette question ouverte au cas où quelqu'un aurait quelque chose de plus élégant.
import feedparser
import sys
blog = feedparser.parse('myblog.xml')
sys.stdout = open('blog','w')
for itemnumber in range(0, len(blog.entries)):
print blog.entries[itemnumber].content
sys.stdout.close()
je CTRL-D'ed de l'interprète, parce que je ne savais pas comment fermer le fichier ouvert sans fermer la sortie standard de Python. Ensuite, j'ai ré-entré l'interprète, ouvert le fichier, lu le fichier, et nettoyé le HTML à partir de là. (nltk.html_clean est une faute de frappe dans la version en ligne du livre NLTK lui-même, en passant ... c'est en fait nltk.clean_html). Ce que j'ai fini avec était presque, mais pas tout à fait, en clair.
duplication possible de [Extraction du texte du fichier HTML en utilisant Python] (http://stackoverflow.com/questions/328356/extracting-text-from-html-file-using-python) –
@Sentinel Ce n'est pas un doublon. .. Ma question a plus à voir avec Feedparser. Je sais comment nettoyer le HTML, et j'ai déjà montré que je peux le faire. Je ne sais pas comment le faire sur chaque entrée avec Feedparser. – magnetar