我使用lxml.html生成一些HTML.我想打印(带缩进)我的最终结果到一个html文件.我怎么做?
这是我迄今为止所尝试过的(我对Python和lxml相对较新):
import lxml.html as lh
from lxml.html import builder as E
sliderRoot=lh.Element("div", E.CLASS("scroll"), style="overflow-x: hidden; overflow-y: hidden;")
scrollContainer=lh.Element("div", E.CLASS("scrollContainer"), style="width: 4340px;")
sliderRoot.append(scrollContainer)
print lh.tostring(sliderRoot, pretty_print = True, method="html")
如您所见,我正在使用pretty_print = True属性.我认为这会给缩进代码,但它并没有真正帮助.这是输出:
< div style =“overflow-x:hidden; overflow-y:hidden;” class =“scroll”>< div style =“width:4340px;”类= “scrollContainer” >< / DIV>< / DIV>
解决方法:
我最终直接使用了BeautifulSoup.这是lxml.html.soupparser用于解析HTML的内容.
BeautifulSoup有一种美化方法,可以完全按照它的说法进行操作.它用适当的缩进和一切来美化HTML.
BeautifulSoup不会修复HTML,因此破坏的代码仍然存在.但在这种情况下,由于代码是由lxml生成的,因此HTML代码至少在语义上是正确的.
在我的问题中给出的例子中,我将不得不这样做:
from BeautifulSoup import BeautifulSoup as bs
root = lh.tostring(sliderRoot) #convert the generated HTML to a string
soup = bs(root) #make BeautifulSoup
prettyHTML = soup.prettify() #prettify the html