如何使用AngleSharp从解析的html元素获取css属性

时间:2017-01-02 19:48:34

标签: anglesharp css-parsing

拥有这个CSS:

import sys
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23,GPIO.IN,pull_up_down = GPIO.PUD_UP)
print "PROGRAM STARTED"
try:
    while 1:
        pay_button = GPIO.input(23)
        if pay_button == False :
            print "Payment requested."
            time.sleep(0.25)
except KeyboardInterrupt:
    print "Keyboard exit."
except:
    print "Some other error"
finally:
    GPIO.cleanup()

这个Html:

.foo { background-size: 10px 20px; }

这个C#:

<span class="foo"></span>

如何将关联的背景宽度和高度设为元素

(目前我正在使用AngleSharp版本0.9.9)

1 个答案:

答案 0 :(得分:2)

首先,C#代码是错误的。传递给parser.Parse的字符串是HTML代码,而不是URI。此外,您的代码不进行任何CSS解析 - 它只使用HTML解析器。因此,让我们使用浏览上下文来满足您的所有需求。

var config = Configuration.Default.WithDefaultLoader().WithCss();
var context = BrowsingContext.New(config);
var document = context.OpenAsync("http://localhost/test.html").Result;
var element = document.QuerySelector("span.foo");
var style = document.DefaultView.GetComputedStyle(element);
var size = style.BackgroundSize;

请记住,如果不存在此类元素(与查询不匹配),element可能为null,并且GetComputedStyle方法仅以有限的方式工作。此外,如果您的CSS在外部样式表中定义,请确保激活资源加载。

希望这有帮助!