4

次のURLhttp ://live.reuters.com/Event/rss.aspx?id=70335でRSSフィードからデータを抽出しようとしています。基本的に、この投稿で概説されているコードを使用して、各投稿のタイトルと日付を抽出したいと思います。XMLパッケージRを使用してRSSフィードを解析します。

コード自体は

 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形式と関係がありますか?最初の45件だけでなく、RSSフィードのすべての投稿を取得できるようにするための回避策はありますか?私はデータスクレイピングの初心者なので、どんな助けでも大歓迎です。

ありがとう、トーマス

4

1 に答える 1

1

履歴情報を取得できない RSS/Atom フィードの問題に対処します。「RSS フィードの古いアイテムをすべて取得するにはどうすればよいですか?」を参照してください。

ただし、非公式の Google Reader 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
于 2012-11-27T01:50:34.747 に答える