使用 rvest 从闪存页面抓取数据
Scrape data from flash page using rvest
我正在尝试从此页面抓取数据:
如果我尝试使用 css 选择器和通常的 rvest 语法来抓取玩家的名字:
names <- read_html("http://www.atpworldtour.com/en/tournaments/brisbane-international-presented-by-suncorp/339/2016/match-stats/r975/f324/match-stats?") %>%
html_nodes(".scoring-player-name") %>% sapply(html_text)
一切顺利。
不幸的是,如果我尝试抓取下面的统计数据(首先发球得分赢了,..)
使用选择器 .stat-breakdown span
我无法检索任何数据。
我知道通常不建议使用 rvest 抓取动态创建的页面,但是我不明白为什么有些数据会被抓取而有些数据不会。
我不使用 Rvest。如果您遵循下面的代码,您应该得到图片中的格式,基本上是一个字符串,您可以根据分隔符将其转换为数据框 :, .
此标签包含的信息也比显示在 UI 网页中的信息多。
我也可以尝试 RSelenium,但需要获得我的另一台 PC。所以我会让你知道 RSelenium 是否适合我。
library(XML)
library(RCurl)
library(stringr)
url<-"http://www.atpworldtour.com/en/tournaments/brisbane-international-presented-by-suncorp/339/2016/match-stats/r975/f324/match-stats?"
url2<-getURL(url)
parsed<-htmlParse(url2)
# get messi data from tag
step1<-xpathSApply(parsed,"//script[@id='matchStatsData']",xmlValue)
# removing some unwanted characters
step2<-str_replace_all(step1,"\r\n","")
step3<-str_replace_all(step2,"\t","")
step4<-str_replace_all(step3,"[[{}]\"]","")
然后输出就是这样一个字符串
我正在尝试从此页面抓取数据:
如果我尝试使用 css 选择器和通常的 rvest 语法来抓取玩家的名字:
names <- read_html("http://www.atpworldtour.com/en/tournaments/brisbane-international-presented-by-suncorp/339/2016/match-stats/r975/f324/match-stats?") %>%
html_nodes(".scoring-player-name") %>% sapply(html_text)
一切顺利。
不幸的是,如果我尝试抓取下面的统计数据(首先发球得分赢了,..)
使用选择器 .stat-breakdown span
我无法检索任何数据。
我知道通常不建议使用 rvest 抓取动态创建的页面,但是我不明白为什么有些数据会被抓取而有些数据不会。
我不使用 Rvest。如果您遵循下面的代码,您应该得到图片中的格式,基本上是一个字符串,您可以根据分隔符将其转换为数据框 :, .
此标签包含的信息也比显示在 UI 网页中的信息多。 我也可以尝试 RSelenium,但需要获得我的另一台 PC。所以我会让你知道 RSelenium 是否适合我。
library(XML)
library(RCurl)
library(stringr)
url<-"http://www.atpworldtour.com/en/tournaments/brisbane-international-presented-by-suncorp/339/2016/match-stats/r975/f324/match-stats?"
url2<-getURL(url)
parsed<-htmlParse(url2)
# get messi data from tag
step1<-xpathSApply(parsed,"//script[@id='matchStatsData']",xmlValue)
# removing some unwanted characters
step2<-str_replace_all(step1,"\r\n","")
step3<-str_replace_all(step2,"\t","")
step4<-str_replace_all(step3,"[[{}]\"]","")
然后输出就是这样一个字符串