如何在Python中获取HTML页面内容
我下载了一个网页,并把它保存成了一个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 个回答
2
你可以看看这个链接:从HTML文档中提取数据 - 深入Python,因为这里的内容(几乎)正好符合你的需求。
9
我个人喜欢用lxml,因为它就像瑞士军刀一样多功能...
from lxml import html print html.parse('http://someurl.at.domain').xpath('//body')[0].text_content()
这段代码告诉lxml去获取网页,找到
标签,然后提取并打印出所有的文本。我经常需要解析网页,而用正则表达式通常不是个好办法,除非你只需要用一次。如果网页的作者改了他们的HTML结构,你的正则表达式很可能就会失效。而用解析器就更可靠,通常能继续正常工作。
用解析器的一个大问题是,你需要学习怎么找到你想要的文档部分,但在浏览器里有很多XPATH工具可以帮助你简化这个过程。
12