我已将网页下载到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))
答案 0 :(得分:12)
答案 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
完成。