寻找可以获取HTML页面并将该页面使用的任何链接的CSS样式定义插入其中的python代码 - 因此不需要任何外部引用的css页面。
需要将单个文件作为电子邮件附件从网站上使用的现有页面插入。谢谢你的帮助。
答案 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 urllib
或urllib2
来检索它们。
答案 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)