使用 R 从 xml 节点中提取 javascript 语法

Extracting javascript syntax from a xml node using R

我希望这不会太麻烦,但我正在尝试从 XML 节点或使用 R 的节点集中提取 javascript 语法。

我想从以下节点中提取部分 url:

[[76]] <'a href="javascript:;" onclick="self.name='regmain'; window.open('regcssm.asp?Cl=23&amp;Lg=1&amp;Co=1201.00', 'regpopup', 'height=400,width=400,resizable=yes,scrollbars=yes'); return false;">1201.00<'/a> 

此页面来自 UN Harmonized System for Products Classification,它实际上是一个 .asp 页面。

不过,我设法解析了它并找到了必要的节点。

我无法弄清楚,无论是从网络上还是在这个论坛中,R 是否具有提取此 url 的某种能力:(regcssm.asp?Cl=23&Lg=1&Co=1201.00) . 我尝试了 xmlGetAttr(它只给出了 'javascript')并且 xpathSApply 给出了 1201.00.

有没有办法这样做,或者从 R 中的 xml 中将此行作为文本字符串提取出来?

WIN 7-64 位,R 3.0.1.

假设您解析的 html 存储在 bar

# Extract the relevant "onclick" attributes
 w <- xpathSApply(bar,path = '//a[@href="javascript:;"][@onclick]',
        fun = xmlGetAttr, "onclick")

# extract the text between brackets `window.open()`  split by `,` and then
# extract the first component and remove `'` 

gsub("'",'',sapply(strsplit(gsub(".*\((.*)\).*", "\1", w),','),head,1))

我确定有更短的答案(我有 R 版本 3.1.1):

install.packages("rvest"); install.packages("magrittr")
library(rvest);library(magrittr)
UN <- html("http://unstats.un.org/unsd/cr/registry/regso.asp?Ci=11&Lg=1")
UN %<>% html_nodes(".content table") %>% .[[2]] %>% 
html_nodes(".tcont, .lcont") %>% html_nodes("a") %>% .[-1]
UN %<>% lapply(function(x) x %>% as("character"))
UN %<>% substr(67, 108)
UN