2016-11-14 163 views
2

我有一個網站,我想從中抓取數據,但有8頁的數據價值。我已經使用以下來獲得數據的第一頁網頁抓取跨多頁rvest

library(rvest) 
library(stringr) 
library(tidyr) 

site <- 'http://www.basketball-reference.com/play-index/draft_finder.cgi?request=1&year_min=2001&year_max=2014&college_id=0&pos_is_g=Y&pos_is_gf=Y&pos_is_f=Y&pos_is_fg=Y&pos_is_fc=Y&pos_is_c=Y&pos_is_cf=Y&order_by=year_id' 
webpage <- read_html(site) 

draft_table <- html_nodes(webpage, 'table') 
draft <- html_table(draft_table)[[1]] 
head(draft) 
draft <- draft[-1,] 
names(draft) <- c("rank", "year", "league", "round", "pick", "team",  "player", "age", "position", "birth", "college", 
        "yearin", "lastyear", "car.gp", "car.mp", "car.ppg", "car.rebpg", "car.apg", "car.stlpg", "car.blkpg", 
       "car.fgp", "car.2pfgp", "car.3pfgp", "car.ftp", "car.ws", "car.ws48") 

draft <- draft[draft$player != "" & draft$player != "Player", ] 

看來,網址在序列移動,與第一頁具有偏移= 0,和第二偏移= 100,第三頁偏移量= 200等等。

我的問題是,我找不到一個簡單的方法來一次刮掉所有的8頁,而沒有手動粘貼到上面的「網站」向量的網址。我希望能夠做到這一點,如果存在一個普遍的投資解決方案,那就太好了。否則,任何幫助或建議將不勝感激。非常感謝。

回答

3

功能follow_link是你在找什麼。

library(rvest) 
library(stringr) 
library(tidyr) 

site <- 'http://www.basketball-reference.com/play-index/draft_finder.cgi?request=1&year_min=2001&year_max=2014&college_id=0&pos_is_g=Y&pos_is_gf=Y&pos_is_f=Y&pos_is_fg=Y&pos_is_fc=Y&pos_is_c=Y&pos_is_cf=Y&order_by=year_id' 

s <- html_session(site) 
s <- s %>% follow_link(css = '#pi p a') 
url2 <- s$handle$url 

s <- s %>% follow_link(css = '#pi a+ a') 
url3 <- s$handle$url 

它出現鏈接模式在第二頁後回收,因此後續頁面可以導航到follow_link(css = '#pi a+ a')

+0

你是怎麼找到css的? – jvalenti

+0

選擇器小工具。使用rvest查看小插曲:ftp://cran.r-project.org/pub/R/web/packages/rvest/vignettes/selectorgadget.html –

+0

但是當沒有更多的鏈接可以遵循時會發生什麼?也許某種類型的'while'循環是合適的?或者增加url中的頁面偏移量直到失敗? – JasonAizkalns