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

Extracting javascript syntax from a xml node using R

本文关键字:提取 javascript 语法 节点 xml 使用      更新时间:2023-12-17

我希望这不会太麻烦,但我正在尝试使用R.从XML节点或节点集提取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> 

这个页面来自联合国产品分类协调制度,实际上是一个.asp页面。

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

我不知道,无论是从网络上还是在这个论坛内,R是否有能力提取这个网址:(regcssm.asp?Cl=23&Lg=1&Co=120.00)。我尝试了xmlGetAttr(它只给出'javascript'),xpathSApply给出1201.00。

有没有办法做到这一点,或者从R中的xml中提取这一行作为文本字符串?

以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