Xml Web服务器与动态表的冲突
在我的第一个练习中,我试图找出如何搜索正在出售的歌剧票,最终找到最好的交易。我想做两件事:Xml Web服务器与动态表的冲突,xml,json,r,rvest,Xml,Json,R,Rvest,在我的第一个练习中,我试图找出如何搜索正在出售的歌剧票,最终找到最好的交易。我想做两件事: 创建类别和价格表,以便能够搜索任何类别中的最佳价格 保存指向最佳交易(每个类别的价格)的http地址的链接 我遇到的问题是,我只能看到15个观测值,但这个表可能要大得多 library(rvest) rmSpace <- function(x){ x<-gsub("\t","",x) x<-gsub("\n","",x) } page <- url %&
library(rvest)
rmSpace <- function(x){
x<-gsub("\t","",x)
x<-gsub("\n","",x)
}
page <- url %>% html()
date <- page %>%
html_nodes(".date-tabdyn") %>%
html_text()
date <- date[-1]
date <-rmSpace(date)
category <- page %>%
html_nodes(".td_description .bold") %>%
html_text()
category<-rmSpace(category)
description <- page %>%
html_nodes(".td_description") %>%
html_text()
description <- description[-1]
description <- rmSpace(description)
price <- page %>%
html_nodes(".valeur_revente .montant-numeric") %>%
html_text()
price_normal <- page %>%
html_nodes(".valeur_faciale .montant-numeric") %>%
html_text()
links <- page %>% html_nodes(".button_eae9e5") %>% html_attr("onclick")
links <- substr(links,31,nchar(links)-2)
tab <- cbind(category, price, price_normal, date, description, links)
库(rvest)
rmSpace你应该看看RSelenium。您可以从以下位置获取有关Selenium的详细信息:
本质上,Selenium创建了一个webbrowser来呈现实际的网页,然后您就可以刮取生成的HTML。根据您使用的浏览器,您将能够处理各种有趣的web协议。在R中一个易于使用的webbrowser是phantomJS()
考虑下面的代码。首先,我指向phantomJS可执行文件(并且能够指定自定义代理!),创建驱动程序并打开会话。PhanomJS之所以很棒,部分原因是它“无头”,所以您不会看到任何额外的窗口。然后,您指示您的虚拟web浏览器导航到您的url,并获取源代码
pJS = phantom(pjs_cmd="C:/phantomjs2/bin/phantomjs.exe",extras="--proxy=localhost:3128")
remDr = remoteDriver(browserName = 'phantomjs')
remDr$open()
remDr$navigate(url)
soup = remDr$getPageSource()
总的来说,对我来说,这已经解决了90%的web访问问题,就像你描述的那样。你应该研究一下RSelenium。您可以从以下位置获取有关Selenium的详细信息:
本质上,Selenium创建了一个webbrowser来呈现实际的网页,然后您就可以刮取生成的HTML。根据您使用的浏览器,您将能够处理各种有趣的web协议。在R中一个易于使用的webbrowser是phantomJS()
考虑下面的代码。首先,我指向phantomJS可执行文件(并且能够指定自定义代理!),创建驱动程序并打开会话。PhanomJS之所以很棒,部分原因是它“无头”,所以您不会看到任何额外的窗口。然后,您指示您的虚拟web浏览器导航到您的url,并获取源代码
pJS = phantom(pjs_cmd="C:/phantomjs2/bin/phantomjs.exe",extras="--proxy=localhost:3128")
remDr = remoteDriver(browserName = 'phantomjs')
remDr$open()
remDr$navigate(url)
soup = remDr$getPageSource()
总的来说,对我来说,这已经解决了90%的web访问问题,就像您描述的那样。谢谢。出于好奇,硒是唯一的方法吗?我开始阅读有关硒的内容,但我还没有成功地设置它。@Drew75可能还有其他方法,但根据我的经验,硒是最简单的。谢谢。出于好奇,硒是唯一的方法吗?我开始阅读有关硒的文章,但我还没有成功地设置它。@Drew75可能还有其他方法,但根据我的经验,硒是最简单的。