mxTidy - HTML Tidy for Python

[size=large]

抓取的html不处理一下很容易破坏页面的布局

官网的python封装好像不支持linux,囧

另外找了一个

mxTidy - HTML Tidy for Python

网站
[url]http://www.egenix.com/products/python/mxExperimental/mxTidy/[/url]

下载
[url]http://www.egenix.com/products/python/mxExperimental/[/url]

文档
[url]http://www.egenix.com/products/python/mxExperimental/mxTidy/mxTidy.pdf[/url]

我看了半天文档,居然没有找到,不让他输出
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
的接口
只好自己山寨了一个

from mx import Tidy
def tidy(html):
html=Tidy.tidy(html,output_xhtml=1,wrap=0)[2]
begin="<body>"
return html[html.find(begin)+len(begin):html.rfind("</body>")].strip()

print tidy('<div>x<img src="xx"><p>')

<div>x<img src="xx" /></div>

htmltidy 的 python 封装(续)


Qiangning Hong
发送至 我

试过,激活tidy会导致进程crash,没有找到原因。

---------------------------
我一测试果然,不知道是封装烂,还是本身就烂

干脆用原始的版本,搞一个进程外调用吧

wget http://nchc.dl.sourceforge.net/sourceforge/tidy/tidy4aug00.tgz

然后安装,然后

from __future__ import with_statement
import subprocess
import os

def tidy(html):
with os.tmpfile() as temp:
with open(os.devnull,"w" ) as null:
print >>temp,html
temp.seek(0)
html=subprocess.Popen(
["tidy", "-utf8","-asxhtml"],
stdin=temp,
stderr=null,
stdout=subprocess.PIPE
).communicate()[0]
begin="<body>"
return html[html.find(begin)+len(begin):html.rfind("</body>")].strip()

tidy("<div>x<a>a")
[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值