html - 从 OECD 抓取表格

标签 html r web-scraping html-table

我正在尝试从 https://data.oecd.org/unemp/unemployment-rate.htm 中抓取一张表格和我的表在具体 https://data.oecd.org/chart/66NJ .我想抓取顶部的月份以及“OECD - Total”和“The Netherlands”行中的所有值

在尝试了许多不同的代码并在这个论坛和其他论坛上搜索之后,我只是想不出如何从这个表中抓取。我尝试了通过选择器小工具找到的许多不同的 html 代码或在我的浏览器中检查元素,但不断收到“0 列表”或“字符为空”

如有任何帮助,我们将不胜感激。

library(tidyverse)
library(rvest)
library(XML)
library(magrittr)

#Get element data from one page
url<-"https://stats.oecd.org/sdmx-json/data/DP_LIVE/.HUR.TOT.PC_LF.M/OECD?json-lang=en&dimensionAtObservation=allDimensions&startPeriod=2016-08&endPeriod=2020-07"
  
#scrape all elements
content <- read_html(url)

#trying to load in a table (giveslist of 0)
inladentable <- readHTMLTable(url)

#gather al months (gives charahter 'empty')
months <- content %>% 
  html_nodes(".table-chart-sort-link") %>%
  html_table()
  
#alle waarden voor de rij 'OECD - Total' verzamelen
wwpercentage<- content %>% 
  html_nodes(".table-chart-has-status-e") %>%
  html_text()
  
# Combine into a tibble
wwtable <- tibble(months=months,wwpercentage=wwpercentage)

最佳答案

这是 JSON 而不是 HTML
您可以使用 httrjsonlite 查询它:

library(httr)
res <- GET("https://stats.oecd.org/sdmx-json/data/DP_LIVE/.HUR.TOT.PC_LF.M/OECD?json-lang=en&dimensionAtObservation=allDimensions&startPeriod=2016-08&endPeriod=2020-07")
res <- jsonlite::fromJSON(content(res,as='text'))
res 

#> $header
#> $header$id
#> [1] "98b762f3-47aa-4e28-978a-a4a6f6b3995a"
#> 
#> $header$test
#> [1] FALSE
#> 
#> $header$prepared
#> [1] "2020-09-30T21:58:10.5763805Z"
#> 
#> $header$sender
#> $header$sender$id
#> [1] "OECD"
#> 
#> $header$sender$name
#> [1] "Organisation for Economic Co-operation and Development"
#> 
#> 
#> $header$links
#>                                                                                                                                                              href
#> 1 https://stats.oecd.org:443/sdmx-json/data/DP_LIVE/.HUR.TOT.PC_LF.M/OECD?json-lang=en&dimensionAtObservation=allDimensions&startPeriod=2016-08&endPeriod=2020-07
#>       rel
#> 1 request
#> 
#> 
#> $dataSets
#>        action observations.0:0:0:0:0:0 observations.0:0:0:0:0:1
#> 1 Information   5.600849, 0.000000, NA   5.645914, 0.000000, NA
...

关于html - 从 OECD 抓取表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64146171/

相关文章:

r - 从 R 打开 pdf 文件

r - 所有列表元素的索引路径

javascript - 我如何在 html 5 图表中为每个栏包含鼠标悬停效果

html - 如何让 <audio> 文件在所有页面上连续播放?

html - 将 css 应用于元素 "path"

python - 请求模块中的数据有效负载?

python - 使用 Python 抓取网页

javascript - 如何将没有特定事件的函数绑定(bind)到动态添加的元素?

R:带参数 C 的 ksvm

python - 使用BeautifulSoup打印目录中所有html文件的内容