rvest返回NA

时间:2017-01-26 06:15:53

标签: r rvest

我正在使用“rvest”进行网页抓取,但我无法从页面中提取模型的价格: - https://www.motorola.com/us/products/moto-z-force-droid-edition 。我需要从页面中提取“$ 720.00”。我的代码是: -

{{1}}

我继续为价格获得角色(0)。

请帮忙。

2 个答案:

答案 0 :(得分:1)

url<-"https://www.motorola.com/us/js/motorola_blc_catalog/price/1281"
page<-html_session(url)
text<-XML::xmlToList(XML::xmlParse(httr::content(page$response)$price))
price<-text$tbody$tr$td$span$text

答案 1 :(得分:0)

将rvest与RSelenium和seleniumPipes一起使用。确保下载phantomJS并将.exe文件放在当前的R工作目录中。有关详细信息,请参阅my other answser

library(tidyverse)
library(rvest)
library(RSelenium) # start a server with utility function
library(seleniumPipes)
#start server
rD <- rsDriver (browser = 'chrome',chromever = "latest",port = 4445L)
#open browser
remDr <- remoteDr(browserName = "chrome",port = 4445L)
web_url <- "https://www.motorola.com/us/products/moto-z-force-droid-edition"

remDr %>% go(web_url)
price <- remDr %>% getPageSource() %>% html_nodes(".price-amount") %>% html_text()

print(price)    
[1] "$30.00/mo" "$720.00"   "$720.00" 

remDr %>% deleteSession() # delete session
rD[["server"]]$stop() # close server

简而言之,您需要使用无头浏览器来呈现javascript生成的值。之后,你可以照常使用rvest。