如何在RStudio中抓取可折叠表格

时间:2019-09-01 13:35:10

标签: r web-scraping rstudio rvest

该网站总结了25份详细表格中的大学入学考试结果。以下是Hacettepe Uni的结果。医学系。我喜欢刮擦表#10,该表总结了该学院哪个高中生最多的学生:

https://yokatlas.yok.gov.tr/lisans.php?y=104810626#

使用常规的R代码无法获得任何数据。

我尝试使用xpath到达网站的第10个可折叠表格

xpath='//*[@id="icerik_1060"]/table' 

但是它导致空单元格。

相同的代码可以成功地与其他网站的许多html表一起使用,没问题。当我使用以下xpath时,我也获得了肯定的数据

xpath= '//*[@id="h1060"]/a/h4' or 
xpath= '//*[@id="headingOne"]/a/h4').

代码如下:

pkgs = c("magrittr", "httr", "stringr", "jsonlite","tidyverse","rvest","xml2")

for (pkg in pkgs){
  if (!require(pkg, character.only = T)){ 
    install.packages(pkg)
    library(pkg)
  }
}

url <- "https://yokatlas.yok.gov.tr/lisans.php?y=104810626#"
webpage <- read_html(url)

wp <- html_nodes(webpage, xpath= '//*[@id="icerik_1060"]/table')
table <- html_table(wp, header=TRUE, trim=TRUE)
table

lasttable <- html_node(webpage,xpath ='/html/body/footer/div/table') 
table <- html_table(lasttable, header=TRUE, trim=TRUE)
table

以下内容对于页面页脚中的最后一张表正常工作。

lasttable <- html_node(webpage,xpath ='/html/body/footer/div/table') 
table <- html_table(lasttable, header=TRUE, trim=TRUE)
table

导致:

[1] Bize Önerilerinizi İletebilirsiniz:yokatlas@yok.gov.tr                                                           
[2] Girdi Göstergelerindeki bilgiler ÖSYM'den 2015, 2016, 2017 ve 2018 Ağustos ayında alınan verilerden derlenmiştir.
[3] Yükseköğretim Program Atlası©Yükseköğretim Kurulu Bilgi İşlem Daire Başkanlığı                                   
<0 rows> (or 0-length row.names)

但以下内容则不行:

wp <- html_nodes(webpage, xpath= '//*[@id="icerik_1060"]/table')
table <- html_table(wp, header=TRUE, trim=TRUE)
table

导致:

list()

这里的xpath不同。我无法获取任何数据的表可折叠。这可能是原因吗?

请帮助解决可能出现的问题以及解决方法。

1 个答案:

答案 0 :(得分:1)

内容是从另一个端点动态加载的。点击展开按钮,您可以在网络标签中找到

library(rvest)
library(magrittr)

t <- read_html('https://yokatlas.yok.gov.tr/content/lisans-dynamic/1060.php?y=104810626') %>% html_node("table") %>% html_table(fill=T)
View(t)

示例视图:

enter image description here


img链接https://i.stack.imgur.com/LPLqP.png