python html转换为普通文本_使用Python将HTML转换为文本

I am trying to convert an html block to text using Python.

Input:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa

Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa

Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa

Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa

Desired output:

Lorem

ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo

ligula eget dolor. Aenean massa

Consectetuer adipiscing elit.

Some

Link Aenean commodo ligula eget dolor. Aenean massa

Aenean

massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean

commodo ligula eget dolor. Aenean massa

Lorem ipsum dolor sit

amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.

Aenean massa

Consectetuer adipiscing elit. Aenean commodo

ligula eget dolor. Aenean massa

I have tried using html2text module without much success (i am quite new to python :))

here is what i have tried:

#!/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)

the "txt" object produces the html block above. I'd like to convert it to text and print it on the screen.

Any help with the piece of code would be much appreciated.

解决方案

What am I missing? soup.get_text() gives exactly the same output you wanted...

from bs4 import BeautifulSoup

soup = BeautifulSoup(html)

print(soup.get_text())

output

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa

Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa

Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa

Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa

EDIT - And to keep newlines, as pointed out by @t-8ch:

print(soup.get_text('\n'))

PS! To be exact you can replace newline with a double one -- then it is identical to your example :)

soup.get_text().replace('\n','\n\n')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值