2010-10-16 55 views
0

我正在尝试关于页面排名的项目。Python:从html文件中获取和解析文本

我想让它看起来像这样的指数(字典):
的file1.html - > [猫,吃,食品,喝,牛奶],[file2.html,file3.html]
file2.html - > [[dog,barked,ran,away],[file1.html,file4.html]]

获取链接很简单 - 查找锚标签。

我的问题是 - 我如何获取文本?在HTML文件中的文本不提前任何标记中包含像<p>

感谢所有帮助

回答

0

如果文本没有包含在标签中,那它真的是HTML吗?
正如Amber所说,使用一些HTML解析器(如BeautifulSoup)可以更轻松地完成此任务。

下面的例子演示了一个用于返回标签内文本的简单方法。
此方法适用于任何标签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 

除此之外,我可以想像,你想的一定期限多少次出现在一些HTML文档的计数的字典。 defaultdict是好的那种事:

>>> 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}) 

希望这给你一些想法与运行。如果遇到其他问题,请回来再打开另一个问题。

1

使用HTML解析器 - 像BeautifulSoup

+0

是的,我正在使用beautifulsoup,不幸的是,我无法解析没有包含在任何标签中的文本 – csguy11 2010-10-16 21:21:01