使用R从XML中提取信息

时间:2015-03-18 14:36:05

标签: xml r xpath

我正在尝试使用R和xpathSApply从以下html代码中提取日期信息:

                                                            </td>
                    </tr>
                                            <tr
                        data-row-id="1363827503"
                                                        class="future "
                        data-lat-from="-33.946098"
                        data-lon-from="151.1772"
                        data-lat-to="33.94252"
                        data-lon-to="-118.406998"
                        data-name-from="Sydney Kingsford Smith Airport"
                        data-name-to="Los Angeles International Airport"
                        data-date="2015-03-23"
                        data-flight=""
                        data-flight-number="VA1"
                    >

这是我尝试过的R中的代码:

library(XML)
url<- "http://www.flightradar24.com/data/flights/va1/"
info<- htmlTreeParse(url, useInternalNodes=T)
xpathSApply(info, "//data-date", xmlValue)

返回:list()

我希望它返回:2015-03-23

1 个答案:

答案 0 :(得分:2)

这是您感兴趣的文件的一部分:

<tr
    data-row-id="1363827503"
    class="future "
    data-lat-from="-33.946098"
    data-lon-from="151.1772"
    data-lat-to="33.94252"
    data-lon-to="-118.406998"
    data-name-from="Sydney Kingsford Smith Airport"
    data-name-to="Los Angeles International Airport"
    data-date="2015-03-23"
    data-flight=""
    data-flight-number="VA1"
>

如您所见,data-date不是元素,它是tr元素的属性。使用//tr/@data-date作为XPath表达式来检索data-date属性。

但请注意,本文档中有多个data-date属性。要仅检索单个属性,还需要一种方法来标识特定行,例如使用

//tr[@data-row-id="1363827503"]/@data-date

ID 1363827503在本文档中只出现一次,因此是此tr元素的唯一标识符。