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 %&

在我的第一个练习中,我试图找出如何搜索正在出售的歌剧票,最终找到最好的交易。我想做两件事:

  • 创建类别和价格表,以便能够搜索任何类别中的最佳价格
  • 保存指向最佳交易(每个类别的价格)的http地址的链接
  • 我遇到的问题是,我只能看到15个观测值,但这个表可能要大得多

    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可能还有其他方法,但根据我的经验,硒是最简单的。