我尝试过并使用以下脚本从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> <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']")
但失败了。有人可以帮忙吗?感谢。
答案 0 :(得分:1)
很难知道你用什么来确定你感兴趣的价值,但是
query = '//ul[@class="BlockItemIndex"]/li[2]/span/text()'
xpathSApply(xml, query, xmlValue)
选出所有具有至少两个包含span元素的li元素的BlockItemIndex元素。由于所有li元素都具有相同的类,因此指定一个类没有帮助。我不确定你要用*
完成什么;我认为//
是多余的。在您的查询后面,//
不是您想要的,您对BlockItemClass元素的直接后代感兴趣。