用于将CSS合并为HTML的Python代码

时间:2010-11-22 15:02:25

标签: python html css

寻找可以获取HTML页面并将该页面使用的任何链接的CSS样式定义插入其中的python代码 - 因此不需要任何外部引用的css页面。

需要将单个文件作为电子邮件附件从网站上使用的现有页面插入。谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

您必须自己编写代码,但BeautifulSoup会对您有所帮助。假设您的所有文件都是本地文件,您可以执行以下操作:

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(open("index.html").read())
stylesheets = soup.findAll("link", {"rel": "stylesheet"})
for s in stylesheets:
    s.replaceWith('<style type="text/css" media="screen">' +
                  open(s["href"]).read()) +
                  '</style>')
open("output.html", "w").write(str(soup))

如果文件不是本地文件,您可以使用Pythons urlliburllib2来检索它们。

答案 1 :(得分:2)

斯文的回答对我有所帮助,但它没有开箱即用。以下是为我做的:

import bs4   #BeautifulSoup 3 has been replaced
soup = bs4.BeautifulSoup(open("index.html").read())
stylesheets = soup.findAll("link", {"rel": "stylesheet"})
for s in stylesheets:
    t = soup.new_tag('style')
    c = bs4.element.NavigableString(open(s["href"]).read())
    t.insert(0,c)
    t['type'] = 'text/css'
    s.replaceWith(t)
open("output.html", "w").write(str(soup))

答案 2 :(得分:0)

您可以使用pynliner。他们的文档示例:

html = "html string"
css = "css string"
p = Pynliner()
p.from_string(html).with_cssString(css)