将CSS整合到HTML中的Python代码

将CSS整合到HTML中的Python代码,python,html,css,Python,Html,Css,寻找可以获取HTML页面并将该页面使用的任何链接CSS样式定义插入其中的python代码-因此不需要任何外部引用的CSS页面 需要从网站上使用的现有页面制作单个文件作为电子邮件附件插入。谢谢您的帮助。您必须自己编写代码,但这将对您大有帮助。假设所有文件都是本地文件,您可以执行以下操作: from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(open("index.html").read()) stylesheets = soup

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


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

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

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))
从美化组导入美化组
soup=BeautifulSoup(打开(“index.html”).read())
stylesheets=soup.findAll(“link”,{“rel”:“stylesheet”})
对于样式表中的:
s、 替换为(“”)+
打开(s[“href]”)。读取()+
'')
打开(“output.html”,“w”).write(str(soup))

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

Sven的回答对我有帮助,但它并不是现成的。以下是为我做的:

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))
你可以用。他们文档中的示例:

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

您可以轻松地拉出CSS,但是您将使用什么CSS路径来标识每个CSS?我不知道你用编程的方式做这件事有多容易。dup?不,不是傻瓜。这里的目的是将所有内容放在一个文件中。请注意,Outlook HTML邮件阅读器是Word,每个标记中除了内联样式=“…”之外的任何内容有时都会导致非常奇怪的结果。这一点,希望他不要使用任何规则:)@Frédéric:好的观点。我肯定我错过了不少案子,但这只是为了让斯科特继续:)谢谢。这是一个很大的帮助。