2010-10-16 7 views
0

J'essaie de travailler sur un projet de classement de pages.Python: Récupération et analyse de texte à partir de fichiers html

Je veux faire un index (dictionnaire) qui ressemble à ceci:
file1.html -> [[chat, a mangé, la nourriture, bu, lait], [file2.html, file3.html]]
file2.html -> [[chien, aboyé, couru, parti], [fichier1.html, fichier4.html]]

Récupérer des liens est facile - cherchez des étiquettes d'ancrage.

Ma question est - comment puis-je chercher du texte? Le texte dans les fichiers html n'est pas enfermé dans des balises comme <p>

Merci d'avance pour toute l'aide

Répondre

0

Si le texte n'est pas inclus dans les balises, est-ce vraiment HTML? Comme le dit Amber, vous aurez un travail plus facile en utilisant un analyseur HTML comme BeautifulSoup.

L'exemple ci-dessous illustre une méthode simple pour renvoyer du texte dans des balises.
Cette méthode fonctionne pour n'importe quelle étiquette AFAIK.

>>> from BeautifulSoup import BeautifulSoup as bs 
>>> html = ''' 
... <div><a href="/link1">link1 contents</a></div> 
... <div><a href="/link2">link2 contents</a></div> 
... ''' 
>>> soup = bs(html) 
>>> for anchor_tag in soup.findAll('a'): 
... print anchor_tag.contents[0] 
... 
link1 contents 
link2 contents 

En dehors de cela, je peux imaginer que vous voudriez un dictionnaire avec un compte de combien de fois un certain terme est apparu dans un document HTML. defaultdict est bon pour ce genre de chose:

>>> from collections import defaultdict 
>>> d = defaultdict(int) 
>>> for anchor_tag in soup.findAll('a'): 
... d[anchor_tag.contents[0]] += 1 
... 
>>> d 
defaultdict(<type 'int'>, {u'link1 contents': 1, u'link2 contents': 1}) 

Espérons que vous donne quelques idées pour courir avec. Revenez et ouvrez une autre question si vous rencontrez d'autres problèmes.

1

Utiliser un analyseur HTML - quelque chose comme BeautifulSoup.

+0

Oui, j'utilise beautifulsoup, malheureusement, je suis incapable d'analyser le texte qui n'est pas inclus dans les balises – csguy11

Questions connexes