Python:从HTML文件提取和解析文本

0 投票
2 回答
686 浏览
提问于 2025-04-16 05:36

我正在做一个关于网页排名的项目。

我想创建一个索引(字典),看起来像这样:
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})

希望这些能给你一些启发。如果你遇到其他问题,欢迎再来提问。

撰写回答