如何使用css_parser获取此属性?

时间:2019-02-22 07:18:06

标签: python css parsing

我想为每个“字体家族”打印“ woff” URL,但是[SerializeField] GameObject abilities; void Update() { if (canuseFireballtimer >= 5) { abilities.GetComponent<usedAbilities>().canFireballnow = true; } 是无法分割的原子字符串。

如何编写代码?

css_parser.CSSParser().style.property.value

我想要一个输出,例如:

#!/usr/bin/env python3
import css_parser

CSSstr='''
@font-face {
    font-family: "Arial";
    src: url("https://www.com/test1.eot");
    src: url("https://www.com/test1.eot?#iefix") format("embedded-opentype"), url("https://www.com/test1.woff2") format("woff2"), url("https://www.com/test1.woff") format("woff"), url("https://www.com/test1.svg") format("svg");
}
@font-face {
    font-family: "Arial Italic";
    src: url("www.com/test2.eot");
    src: url("www.com/test2.eot?#iefix") format("embedded-opentype"), url("www.com/test2.woff2") format("woff2"), url("www.com/test2.woff") format("woff"), url("www.com/test2.svg") format("svg");
}
'''

parser = css_parser.CSSParser()
sheet = parser.parseString(CSSstr)

for rule in sheet:
    if rule.type == 5:
        # find property
        for property in rule.style:
            if property.name == 'font-family':
                print(property.value)
            if property.name == 'src':
                print(property.value)

1 个答案:

答案 0 :(得分:0)

正如您所说,它只是一个原子字符串。

解决方法:使用正则表达式捕获数据。

        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = builderFactory.newDocumentBuilder();
        Document document = builder.parse(new 
        File("C:\\Users\\Dexter\\IdeaProjects\\vulnTest\\pom.xml"));

        Node node = document.getDocumentElement();
        NodeList nl = node.getChildNodes();

        for(int i=0; i< nl.getLength(); i++){
            String tmp = nl.item(i).getNodeName();
            if (tmp.equals("build")){
                System.out.println("build Exist");

                Element ele = document.createElement("test");
                Element nodes = document.createElement("tt");
                Text txt = document.createTextNode("data");
                nodes.appendChild(txt);
                ele.appendChild(nodes);

                Transformer transformer = TransformerFactory.newInstance().newTransformer();
                transformer.transform(new DOMSource(document), new StreamResult(new File("C:\\Users\\Dexter\\IdeaProjects\\vulnTest\\pom.xml")));

                NodeList nl2 = document.getElementsByTagName("plugins");
                for (int j=0; j<nl2.getLength();j++){
                    String tmp2 = nl2.item(j).getNodeName();
                    System.out.println(nl2.item(j).getNodeName());
                    if(tmp2.equals("plugins"))
                    {
                        System.out.println("plugins exists");
                    }
                }
            }

表达说明:

  • import re ... for rule in sheet: if rule.type == 5: # find property for property in rule.style: if property.name == 'font-family': print(property.value) if property.name == 'src': match = re.search(r'.*url\((.*woff)\)\.*', property.value) print(match.group(1)) 一些由任何字符开头的字符串,然后是.*url\(
  • url(要捕获的数据。由(.*woff)结尾的任何文本。
  • woff前先\)\.*,然后再输入任何文本。

我希望这将为您提供解决方案。