Maison >développement back-end >Tutoriel Python >[Tutoriel PYTHON] Extraire les résumés d'articles

[Tutoriel PYTHON] Extraire les résumés d'articles

黄舟
黄舟original
2017-02-07 16:11:181765parcourir

Dans la liste d'articles du système de blog, afin de présenter le contenu de l'article plus efficacement et de permettre aux lecteurs de choisir de lire de manière plus ciblée, le titre et le résumé de l'article sont généralement fournis en même temps.

Le contenu d'un article peut être au format texte brut, mais de nos jours avec la popularité d'Internet, il est davantage au format HTML. Quel que soit le format, le résumé constitue généralement le contenu du début de l'article et peut être extrait en fonction du nombre de mots spécifié.

Résumé en texte brut

Nous extrayons d'abord le résumé en texte brut. Le document en texte brut est une longue chaîne, et il est facile d'extraire son résumé :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""Get a summary of the TEXT-format document"""

def get_summary(text, count):
u"""Get the first `count` characters from `text`

>>> text = u'Welcome 这是一篇关于Python的文章'
>>> get_summary(text, 12) == u'Welcome 这是一篇'
True
"""
assert(isinstance(text, unicode))
return text[0:count]

if __name__ == '__main__':
import doctest
doctest.testmod()

Résumé HTML

Les documents HTML contiennent un grand nombre de balises (telles que 4a249f0d628e2318394fd9b75b4636b1, e388a4556c0f65e1904146cc1a846bee, 3499910bf9dac5ae3c52d5ede7383485, etc.). Ces caractères sont des instructions de balise et apparaissent généralement par paires. une simple interception de texte détruira la structure du document HTML, provoquant un affichage inapproprié du résumé dans le navigateur.

Afin d'intercepter le contenu tout en suivant la structure du document HTML, vous devez analyser le document HTML. En Python, cela peut être fait à l'aide de la bibliothèque standard HTMLParser.

L'une des fonctions d'extraction d'extraits de code les plus simples consiste à ignorer les balises HTML et à extraire uniquement le texte natif à l'intérieur des balises. Ce qui suit est une implémentation Python similaire à cette fonction :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""Get a raw summary of the HTML-format document"""

from HTMLParser import HTMLParser

class SummaryHTMLParser(HTMLParser):
"""Parse HTML text to get a summary

>>> text = u&#39;<p>Hi guys:</p><p>This is a example using SummaryHTMLParser.</p>&#39;
>>> parser = SummaryHTMLParser(10)
>>> parser.feed(text)
>>> parser.get_summary(u&#39;...&#39;)
u&#39;<p>Higuys:Thi...</p>&#39;
"""
def __init__(self, count):
HTMLParser.__init__(self)
self.count = count
self.summary = u&#39;&#39;

def feed(self, data):
"""Only accept unicode `data`"""
assert(isinstance(data, unicode))
HTMLParser.feed(self, data)

def handle_data(self, data):
more = self.count - len(self.summary)
if more > 0:
# Remove possible whitespaces in `data`
data_without_whitespace = u&#39;&#39;.join(data.split())

self.summary += data_without_whitespace[0:more]

def get_summary(self, suffix=u&#39;&#39;, wrapper=u&#39;p&#39;):
return u&#39;<{0}>{1}{2}</{0}>&#39;.format(wrapper, self.summary, suffix)

if __name__ == &#39;__main__&#39;:
import doctest
doctest.testmod()

Ce qui précède est le contenu du [tutoriel PYTHON] pour extraire des résumés d'articles. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www. .php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn