Очистить данные из класса "div" - PullRequest
1 голос
/ 22 февраля 2012

Я пытался и могу очистить данные из класса td, используя следующий скрипт:

 nArticles <- getNodeSet(pagetree,"//*/td[@class='bg1 W1']//*/li[@class='LI2 font28 C bold W1']") #current price
 current.price <- xmlValue(nArticles[[1]])

Теперь у меня есть веб-ресурс, как показано ниже:

<div>
    <div style="float: left;">
            <ul class="BlockItemIndex" style="width:123px; height:92px">
                    <li class="font12 I1">
                            Index
                    </li>
                    <li class="I1" style="font:bold 20px Arial">
                            <span id="ctl00_ctl00_cphContent_cphContent_lblIndex">21,549.28</span></li>
                    <li class="I1" style="font:normal 15px Arial">
                            <span id="ctl00_ctl00_cphContent_cphContent_lblChange"><span class="pos bold">+70.56 (0.33%)</span></span></li>
                    <li class="I1">
                            <span class="font12">Turnover</span>&nbsp;<span id="ctl00_ctl00_cphContent_cphContent_lblTurnover">70.41B</span></li>
            </ul>
    </div>
    <div class="seperate"></div>
    <div style="float: left;">
            <ul class="BlockItemChange" style="width:75px">
                    <li class="font12 I1">
                            High
                    </li>
                    <li class="I2">
                            <span id="ctl00_ctl00_cphContent_cphContent_lblHigh">21,569.74</span></li>
            </ul>
            <ul class="BlockItemChange" style="width:75px; margin-top:2px;">
                    <li class="font12 I1">
                            Low
                    </li>
                    <li class="I2">
                            <span id="ctl00_ctl00_cphContent_cphContent_lblLow">21,302.19</span></li>
            </ul>
    </div>
    <div class="seperate"></div>
    <div style="float: left;">
            <ul class="BlockItemChange" style="width:75px">
                    <li class="font12 I1">
                            Open
                    </li>
                    <li class="I2">
                            <span id="ctl00_ctl00_cphContent_cphContent_lblOpen">21,339.02</span></li>
            </ul>
            <ul class="BlockItemChange" style="width:75px; margin-top:2px;">
                    <li class="font12 I1">
                            Prev Close
                    </li>
                    <li class="I2">
                            <span id="ctl00_ctl00_cphContent_cphContent_lblPreClose">21,478.72</span></li>
            </ul>
    </div>
</div>

Мне нужно забрать 21,549.28, и я попробовал следующее:

nArticles <- getNodeSet(pagetree,"//*/ul[@class='BlockItemChange']//*/li[@class='I2']") 

Но терпит неудачу. Кто-нибудь может помочь? Спасибо.

1 Ответ

1 голос
/ 22 февраля 2012

Трудно понять, что вы используете, чтобы определить интересующее вас значение, но

query = '//ul[@class="BlockItemIndex"]/li[2]/span/text()'
xpathSApply(xml, query, xmlValue)

выбирает все элементы BlockItemIndex, которые имеют как минимум два элемента li, содержащие элемент span. Поскольку все элементы li имеют один и тот же класс, указывать его не помогает. Я не уверен, что вы пытались достичь с помощью *; Я думаю, что это избыточно с //. Позже в вашем запросе // не то, что вам нужно, вы заинтересованы в непосредственных потомках элемента BlockItemClass.

...