2012-11-21 25 views
4

我想从以下URL http://live.reuters.com/Event/rss.aspx?id=70335提取RSS源中的数据。基本上我想提取使用在这篇文章中列出的代码每个帖子的标题和日期:Parse RSS feed using XML packagin R使用R提取从RSS源的更多帖子到CSV

代码本身是

library(XML) 
library(RCurl) 

###Extracting Data from Reuters 
xml.url <- "http://live.reuters.com/Event/rss.aspx?id=70335" 
script <- getURL(xml.url) 
doc  <- xmlParse(script) 
titles <- xpathSApply(doc,'//item/title',xmlValue) 
pubdates <- xpathSApply(doc,'//item/pubDate',xmlValue) 
reuters<-cbind(titles, pubdates) 
reuters_data<-data.frame(reuters) 

#Exporting as a csv 
write.csv(reuters_data, file = "reuters_post.csv") 

的代码做几乎正是我想要它做的。但是,我遇到的问题是它只提取了前45个帖子。我知道有近1000个帖子。这是否与rss.aspx格式有关?是否有解决方法,以便我可以获取RSS提要中的所有帖子,而不仅仅是第45个?任何帮助将不胜感激,因为我是数据挖掘的新手。

感谢, 托马斯

+0

好像由他们使用,而不是有毛病R.您可能必须通过每个HTTP的去分析自己的网页,如果你想要的一切的CMS系统中设置的限制://live.reuters的.com /事件/ Conflict_on_the_Gaza_Strip?页= XX –

回答

1

它涉及的RSS/Atom的饲料问题不容许被检索的历史信息,请参阅How Do I Fetch All Old Items on an RSS Feed?

但是,我们可以使用非官方谷歌阅读器API GoogleReaderAPI Wiki

library(RCurl) 
library(RJSONIO) 

N <- 100 # Number of items to fetch 
url <- paste("http://www.google.com/reader/api/0/stream/contents/feed/http://live.reuters.com/Event/rss.aspx%3Fid=70335?n=", N, sep="") 

json <- getURL(url)        # Fetches data 
list <- fromJSON(json)       # JSON to list 
df <- as.data.frame(do.call(rbind, list$items)) # list to data.frame 

title <- unlist(df$title)            # Title 
datetime <- as.POSIXlt(unlist(df$published), origin="1970-01-01", tz="GMT") # Publication date 

reuters <- data.frame(title, datetime)  # Output data.frame 
write.csv(reuters, file = "reuters_post.csv") # Writes CSV 
相关问题