【问题标题】:Python: Fetching and parsing text from html filesPython:从 html 文件中获取和解析文本
【发布时间】:2010-10-16 20:52:41
【问题描述】:

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

我想创建一个如下所示的索引(字典):
file1.html -> [[猫,吃,食物,喝,牛奶],[file2.html,file3.html]]
file2.html -> [[狗,吠,跑,走],[file1.html,file4.html]]

获取链接很容易 - 查找锚标记。

我的问题是 - 我如何获取文本? html 文件中的文本未包含在任何标签中,例如 <p>

提前感谢所有帮助

【问题讨论】:

    标签: python html parsing


    【解决方案1】:

    使用 HTML 解析器 - 类似于 BeautifulSoup

    【讨论】:

    • 是的,我正在使用 beautifulsoup,不幸的是,我无法解析没有包含在任何标签中的文本
    【解决方案2】:

    如果文本没有包含在标签中,它真的是 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})
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      • 2011-04-04
      • 2013-12-22
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多