代码之家  ›  专栏  ›  技术社区  ›  Yin Zhu

如何获取Python中HTML页面的内容

  •  4
  • Yin Zhu  · 技术社区  · 14 年前

    我已将网页下载到HTML文件中。我想知道获取那个页面内容的最简单方法是什么。就内容而言,我的意思是我需要浏览器将显示的字符串。

    清楚:

    输入:

    <html><head><title>Page title</title></head>
           <body><p id="firstpara" align="center">This is paragraph <b>one</b>.
           <p id="secondpara" align="blah">This is paragraph <b>two</b>.
           </html>
    

    输出:

    Page title This is paragraph one. This is paragraph two.
    

    组合起来:

    from BeautifulSoup import BeautifulSoup
    import re
    
    def removeHtmlTags(page):
        p = re.compile(r'''<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>''')
        return p.sub('', page)
    
    def removeHtmlTags2(page):
        soup = BeautifulSoup(page)
        return ''.join(soup.findAll(text=True))
    

    相关的

    6 回复  |  直到 11 年前
        1
  •  12
  •   Oddthinking    14 年前

    用解析HTML Beautiful Soup .

    要获取所有没有标签的文本,请尝试:

    ''.join(soup.findAll(text=True))
    
        2
  •  7
  •   the Tin Man    12 年前

    就我个人而言,我使用LXML是因为它是一把瑞士军刀…

    from lxml import html
    
    print html.parse('http://someurl.at.domain').xpath('//body')[0].text_content()
    

    这会告诉lxml检索页面,找到 <body> 标记,然后提取并打印所有文本。

    我做了很多页面解析,而且大多数时候regex都是错误的解决方案,除非它只是一次性的需要。如果页面的作者更改了他们的HTML,那么很有可能会破坏regex。解析器更有可能继续工作。

    解析器的一个大问题是学习如何访问您所追求的文档的各个部分,但是您可以在浏览器中使用许多XPath工具来简化任务。

        3
  •  2
  •   Bill the Lizard    12 年前

    你想看看 Extracting data from HTML documents - Dive into Python 因为 HERE 它(几乎)正是你想要的。

        4
  •  1
  •   Christian Hausknecht    14 年前

    此任务的最佳模块是lxml或html5lib;Beautifull SOAP不值得再使用。对于递归模型,正则表达式显然是错误的方法。

        5
  •  -2
  •   Ankit    14 年前

    如果我能正确回答你的问题,这可以简单地通过使用urllib的urlopen函数来完成。只需看看这个函数就可以打开一个URL并读取这个页面的HTML代码的响应。

        6
  •  -3
  •   Alexander Gessler    14 年前

    获取浏览器显示内容的可用示例的最快方法是从HTML中删除所有标记并打印其余的标记。例如,可以使用python的 re .