Python CSS解析器+;XHTML生成器,需要建议
伙计们,我需要开发一个能够满足以下要求的工具:Python CSS解析器+;XHTML生成器,需要建议,python,css,parsing,xhtml,Python,Css,Parsing,Xhtml,伙计们,我需要开发一个能够满足以下要求的工具: 输入:包含标题部分中CSS规则的XHTML文档 输出:在标记属性中计算CSS规则的XHTML文档 下面是说明我想要的行为的最好方法 输入示例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <st
标题
部分中CSS规则的XHTML文档李>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<style type="text/css" media="screen">
.a { color: red; }
p { font-size: 12px; }
</style>
</head>
<body>
<p class="a">Lorem Ipsum</p>
<div class="a">
<p>Oh hai</p>
</div>
</body>
</html>
.a{颜色:红色;}
p{font size:12px;}
Lorem Ipsum
哦,海
示例输出:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<body>
<p style="color: red; font-size: 12px;">Lorem Ipsum</p>
<div style="color: red;">
<p style="font-size: 12px;">Oh hai</p>
</div>
</body>
</html>
Lorem Ipsum
哦海
哪些工具/库最适合此类任务?
我不确定BeautifulSoup和cssutils是否有能力做到这一点
Python不是必需的。
如有任何建议,我们将不胜感激 取决于CSS的复杂程度。如果是元素(“p{}”、“a{}”)、ID/类(#test{})的简单问题,那么可能最容易使用正则表达式。您必须有一个来查找所有样式定义,然后解析它们,然后使用更多正则表达式来查找匹配的标记实例 例如,如果您发现有标记的样式,可以使用如下正则表达式:
<a\b[^>]*>(.*?)</a>
]*>(**?)
要获得它们,则必须进行替换以添加样式。当然,您希望正则表达式接受标记作为参数(本例中为a标记)
如果你选择了子元素或其他元素,而不仅仅是根元素和ID/类,这可能会很快变得一团糟
考虑从定义内联样式开始?试试premailer
更多信息:
虽然我不知道有什么具体的工具可以做到这一点,但以下是我将采取的基本方法:
作为xml文档加载
从文档中提取css类和样式
对于每对css类和样式
从css类构造xpath查询
对于每个匹配节点
设置该类的样式属性
从文档中删除样式节点
将文档转换为字符串存在一个是否确实要执行此操作?我看不出这有什么有用的原因……我的第一个问题是为什么?我想让你了解一下这方面的背景:)。简而言之,它是关于发送CSS驱动的电子邮件。因此,它是一种使开发此类消息更容易的工具。不,这与发送垃圾邮件无关。我们之所以一次又一次地将CSS规则添加到元素本身,而不是让它们在邮件中出现一次,是因为我们使用了一些第三方邮件软件。我不确定,甚至不感兴趣,如果它是发送者或客户端的错误,但例如,Gmail客户端有非常差的CSS支持,除非你把属性中的样式。