【发布时间】:2013-01-19 14:37:46
【问题描述】:
我正在尝试使用 Python 将 html 块转换为文本。
输入:
<div class="body"><p><strong></strong></p>
<p><strong></strong>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. <a href="http://example.com/" target="_blank" class="source">Some Link</a> Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p></div>
期望的输出:
洛雷姆 ipsum dolor sit amet,consectetuer adipiscing elit。埃涅斯将军 ligula eget dolor。 Aenean massa
Consectetuer adipiscing elit. 一些 Link Aenean commodo ligula eget dolor。埃涅阿马萨
埃涅阿 massa.Lorem ipsum dolor sit amet,consectetuer adipiscing elit。埃涅阿 commodo ligula eget dolor。 Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit。 Aenean commodo ligula eget dolor。 Aenean massa
Consectetuer adipiscing elit.埃涅斯将军 ligula eget dolor。埃涅马萨
我尝试了html2text 模块但没有成功:
#!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
txt 对象生成上面的 html 块。我想将其转换为文本并打印在屏幕上。
【问题讨论】:
-
一定要用 Python 吗?
lynx -dump filename.html会这样做。 lynx.browser.org 此外,您可以使用 XPath 表达式和 w3.org/Tools/HTML-XML-utils。
标签: python html web-scraping text beautifulsoup