从网页[R]中提取所有(可能的)可选日期值

时间:2016-05-09 15:11:19

标签: html xml r web-scraping

this url string中,“ toDate = 1399849199999 ”字符串的一部分是指以毫秒为单位的UNIX时间,用于提取特定日期的英超联赛表。

在这种情况下,UNIX时间是指2014年5月11日。

as.POSIXlt (1399849199999/1000, tz = "GMT", origin = "1970-01-01")  

我想检索特定月份的所有可能的UNIX时间值。对于此处提供的网址,这6个值存储在网页源代码中,如下所示:

<select name="toDate" id="date" class="selectToSlider" widget="selectToSlider" labels="18" tooltip="false" wrapperClass="selectToSliderWrapper selectToSliderMatchDate"><optgroup label="results"><option value="1399157999999">SAT 03</option><option value="1399244399999">SUN 04</option><option value="1399330799999">MON 05</option><option value="1399417199999" selected="selected">TUE 06</option><option value="1399503599999">WED 07</option><option value="1399849199999">SUN 11</option></optgroup><optgroup label="fixtures"></optgroup></select>

以前我曾经用正则表达式提取这些信息,但这是 neck (***)中的痛苦,我想以更简单的方式做到这一点。

如果有人可以提供可以使用R中的一些Web抓取包提取这些值的代码(可能包含已解释的步骤),我感激不尽,最好是 XML 。我自己尝试了但是我没有成功......

2 个答案:

答案 0 :(得分:1)

rvest让这很容易。寻找&#34;选项&#34;节点,然后抓住&#34;值&#34;属性。

library("rvest")
h <- read_html('<select name="toDate" id="date" class="selectToSlider" widget="selectToSlider" labels="18" tooltip="false" wrapperClass="selectToSliderWrapper selectToSliderMatchDate"><optgroup label="results"><option value="1399157999999">SAT 03</option><option value="1399244399999">SUN 04</option><option value="1399330799999">MON 05</option><option value="1399417199999" selected="selected">TUE 06</option><option value="1399503599999">WED 07</option><option value="1399849199999">SUN 11</option></optgroup><optgroup label="fixtures"></optgroup></select>')
h %>% html_nodes("option") %>% html_attr("value")
[1] "1399157999999" "1399244399999" "1399330799999"
[4] "1399417199999" "1399503599999" "1399849199999"

答案 1 :(得分:1)

我们可以尝试使用XML包来解析你提供的链接中的html,然后使用xpath提取所需的特定信息(整个html中):

library(XML)
EPL.URL <- "http://www.premierleague.com/en-gb/matchday/league-table.html?season=2013-2014&month=MAY&timelineView=date&toDate=1399849199999&tableView=CURRENT_STANDINGS"
EPL.doc <- htmlParse(EPL.URL)
xpathSApply(EPLdoc, "//optgroup[@label='results']/option", xmlGetAttr, "value")