读取跨度值

时间:2017-12-21 21:40:12

标签: c# html getelementbyid geckofx

我想尝试一个用Geckofx读出网站价值的程序。现在我有以下问题,我没有得到所需的值,它向我显示它是null。

我想访问的HTML代码:

$pObj = $Using:p | ConvertFrom-Json
ForEach ($pr in $pObj.PSObject.Properties)
{
   #$pr.Name
   #$pr.Value
}

48.066是我想要阅读的价值。

我现在搜索了大约2天的解决方案,我可以继续我的私人项目,我希望任何人都可以帮助我:)。

我试过的解决方案:

测试1:

<li id="box" class="tooltip" title="">
                <div class="classname"></div>
                <span class="value">
                    <span id="class_test" class="">48.066</span>
                </span>
</li>

测试2:

GeckoElement testelement = null;
testelement = (GeckoElement)Browser.Document.GetElementById("class_test");
string text = testelement.GetAttribute("value");

2 个答案:

答案 0 :(得分:0)

如果testelement为null,则表示您未正确加载页面,或者来源不正确。

这很好用:

string content = "<html><body><li id=\"box\" class=\"tooltip\" title=\"\">"+
    "<div class=\"classname\"></div>" + 
    "<span class=\"value\">" + 
    "<span id=\"class_test\" class=\"\">48.066</span>" + 
    "</span></li></body></html>";
webBrowser1.LoadHtml(content, "http://www.example.com");

在webBrowser_DocumentCompleted:

GeckoElement testelement = null;
testelement = (GeckoElement)webBrowser1.Document.GetElementById("class_test");
string text = testelement.InnerHtml; // 48.066

答案 1 :(得分:0)

最有可能的是,您需要等待文档完成加载才能查找元素。

Browser.DocumentCompleted += (sender, e) => 
{
    var testElement = Browser.Document.GetElementById("class_test") as GeckoElement;
    // TODO: handle testElement being null
    string text = testElement.GetAttribute("value");
}