Python:从html文件中获取和解析文本

时间:2010-10-16 20:52:42

标签: python html parsing

我正在尝试关于页面排名的项目。

我想制作一个如下所示的索引(字典):
file1.html - > [[cat,ate,food,drank,milk],[file2.html,file3.html]]
file2.html - > [[dog,barked,ran,away],[file1.html,file4.html]]

获取链接很简单 - 寻找锚标记。

我的问题是 - 如何获取文字? html文件中的文本未包含在<p>

等任何标记中

提前致谢所有帮助

2 个答案:

答案 0 :(得分:1)

使用HTML解析器 - 类似BeautifulSoup

答案 1 :(得分:0)

如果文字未包含在标签中,那它真的是HTML吗? 正如Amber所说,使用像BeautifulSoup这样的HTML解析器,你可以轻松完成这项任务。

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

希望能给你一些想法。如果您遇到其他问题,请回来打开另一个问题。