如何在Python中获取Html页面的内容

时间:2010-03-10 12:32:20

标签: python html parsing

我已将网页下载到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 个答案:

答案 0 :(得分:12)

使用Beautiful Soup解析HTML。

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

''.join(soup.findAll(text=True))

答案 1 :(得分:7)

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

from lxml import html

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

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

我做了大量的页面解析,大多数时候正则表达式是错误的解决方案,除非它只是一次性的需要。如果页面的作者更改了他们的HTML,那么你的正则表达式会有很大的风险。解析器更有可能继续工作。

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

答案 2 :(得分:2)

你想看看Extracting data from HTML documents - Dive into Python因为HERE它(几乎)完全符合你的要求。

答案 3 :(得分:1)

此任务的最佳模块是lxml或html5lib;美丽的肥皂是不值得再使用的。对于递归模型,正则表达式肯定是错误的方法。

答案 4 :(得分:-2)

如果我正确地提出您的问题,可以通过使用urllib的urlopen函数来完成。只需查看此函数即可打开网址并阅读该网页的html代码的响应。

答案 5 :(得分:-3)

获取浏览器显示内容的可用示例的最快方法是从html中删除任何标记并打印其余标记。例如,这可以使用python的re完成。