如何使用R从xml页面提取信息

如何使用R从xml页面提取信息,xml,r,xml-parsing,Xml,R,Xml Parsing,我正在尝试从该页面获取所有信息: 首先,我将文件下载到file中,然后使用xmlParse(file)对其进行解析 这给了我一个带有一些信息的data.frame。但是我丢失了诸如id(这是最重要的)之类的信息 我想获得一个data.frame,其中一行(每个事务只有一行)包含一个事务的所有信息,例如id``更新的附加索引``affairType等 这样,它就可以工作了(例如id): infofile它是一个HTML文件,而不是XML文件。您需要使用htmlpasse: destfile <

我正在尝试从该页面获取所有信息:

首先,我将文件下载到
file
中,然后使用
xmlParse(file)
对其进行解析

这给了我一个带有一些信息的
data.frame
。但是我丢失了诸如
id
(这是最重要的)之类的信息

我想获得一个
data.frame
,其中一行(每个事务只有一行)包含一个事务的所有信息,例如
id``更新的
附加索引``affairType

这样,它就可以工作了(例如
id
):


infofile它是一个HTML文件,而不是XML文件。您需要使用
htmlpasse

destfile <- tempfile() # make this example copy-pasteable
download.file(url = "http://ws.parlament.ch/affairs/19110758/?format=xml", destfile = destfile)
file <- htmlParse(destfile)
title <- xpathSApply(file, '//h2')
xmlValue(title[[1]])
# [1] "Heilmittelwesen. Gesetzgebung"

destfile这将使您获得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)))
库(XML)
图书馆(RCurl)
图书馆(httr)

srcXML,但是如果我对文档进行HTMLPasse,大部分信息都会丢失。请看:我需要提取大部分信息。。。因此,我需要XML解析文档。还是我弄错了?你是对的,似乎使用R的
download.file
函数强迫服务器向你发送HTML而不是XML,可能是由于HTTP头的原因。尝试手动下载该文件并使用
xmlParse
。我无法手动下载30000个文档:-)我提取的错误是什么<代码>测试否,请查看
读取行(destfile)
,它显然是一个HTML文件。问题在于请求。尝试使用,我相信他们的服务器不会为您提供XML,除非您足够好地模拟浏览器(我不确定确切的标题)。。。使用chrome我可以看到xml文件,而使用firefox,这在某种程度上是不可能的。我会深入讨论这个问题,但正如你可能已经注意到的,我是一个新手,所以如果有人知道我如何强迫R正确下载这个,我将不胜感激。谢谢。这在我的屏幕上起作用。但是我如何下载文件来保持所有信息html都是松散的?
writeLines(substr(srcXML,4,nchar(srcXML)),“filenametowriteto.xml”)
应该可以很好地工作。我现在完成了任务的第一部分(显然我很难掌握)。现在,数据提取仍然不起作用:
id您能详细说明(在上面的原始q中)您想要提取什么信息吗?对于我或其他人来说,提供一种从XML文档中获取所需内容的更为优化的方法可能并不困难。
library(plyr)

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

nodes <-  getNodeSet(file, "//affair/id")
id <-as.numeric(lapply(nodes, function(x) xmlSApply(x, xmlValue)))
destfile <- tempfile() # make this example copy-pasteable
download.file(url = "http://ws.parlament.ch/affairs/19110758/?format=xml", destfile = destfile)
file <- htmlParse(destfile)
title <- xpathSApply(file, '//h2')
xmlValue(title[[1]])
# [1] "Heilmittelwesen. Gesetzgebung"
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)))