Python:从HTML文件提取和解析文本
我正在做一个关于网页排名的项目。
我想创建一个索引(字典),看起来像这样:
file1.html -> [[猫, 吃, 食物, 喝, 牛奶], [file2.html, file3.html]]
file2.html -> [[狗, 吠, 跑, 走], [file1.html, file4.html]]
获取链接很简单——只需要找锚标签就行。
我的问题是——我该怎么获取文本呢?因为在html文件中的文本并没有被像 <p>
这样的标签包裹起来。
提前感谢大家的帮助!
2 个回答
1
使用一个HTML解析器,比如说 BeautifulSoup。
0
如果文本没有被标签包裹,那它算不算HTML呢?
正如Amber所说,使用一些HTML解析工具,比如BeautifulSoup,会让你更容易处理这个问题。
下面的例子展示了一种简单的方法,可以提取标签中的文本。
据我所知,这种方法适用于任何标签。
>>> 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})
希望这些能给你一些启发。如果你遇到其他问题,欢迎再来提问。