加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何从R中提取xml页面中的信息

发布时间:2020-12-16 23:07:31 所属栏目:百科 来源:网络整理
导读:我正在尝试从此页面获取所有信息: http://ws.parlament.ch/affairs/19110758/?format=xml 首先,我将文件下载到文件中,然后用xmlParse(文件)解析它. download.file(url = paste0(http://ws.parlament.ch/affairs/19110758/?format=xml),destfile = destfile)
我正在尝试从此页面获取所有信息: http://ws.parlament.ch/affairs/19110758/?format=xml

首先,我将文件下载到文件中,然后用xmlParse(文件)解析它.

download.file(url = paste0(http://ws.parlament.ch/affairs/19110758/?format=xml),destfile = destfile)
file <- xmlParse(destfile[])

我现在想要提取我需要的所有信息.例如标题和ID号.我试过这样的事情:

title <- xpathSApply(file,"//h2",xmlValue)

但这只给我一个错误:无法为签名’“XMLDocument”找到函数’saveXML’的继承方法

接下来我尝试的是这个:

library(plyr)

test <-ldply(xmlToList(file),function(x) { data.frame(x[!names(x)=="id"]) } )

这给了我一个data.framewith一些Info.但我失去了诸如id之类的信息(这是最重要的).

我想得到一个带有一行(每个事件只有一行)的data.frame,其中包含一个事件的所有信息,例如id“updated additionalIndexing“affairTypeetc.

有了它,它的工作原理(例如id):

infofile <- xmlRoot(file)

nodes <-  getNodeSet(file,"//affair/id")
id <-as.numeric(lapply(nodes,function(x) xmlSApply(x,xmlValue)))

解决方法

这将使您获得XML:

library(XML)
library(RCurl)
library(httr)

srcXML <- getURL("http://ws.parlament.ch/affairs/19110758/?format=xml",.opts=c(user_agent("Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"),verbose()))

myXMLFile <- xmlTreeParse(substr(srcXML,4,nchar(srcXML)))

我本来只使用了来自httr的GET()但它似乎并没有很好地传递用户代理(当我不在代理后面时我需要测试它以确定具体的错误是什么).我也做了substr(),因为前面有一堆奇怪的字符导致xmlTreeParse()调用错误输出.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读