R 刮削台

R 刮削台,r,web-scraping,datatable,rvest,R,Web Scraping,Datatable,Rvest,我正试图从带有R中的rvest的网站上刮取一个表,但出现了一个错误: 打开连接时出错(x,“rb”):HTTP错误404 我怎样才能解决这个问题 我已经尝试了一些选择,但没有一个有效。我不知道我做错了什么。我想知道我是否用错误的方式编码。这似乎很简单,但我解决不了 options(stringsAsFactors = FALSE) url<- "https://www.tutiempo.net/clima/06-2018/ws-830950.html" tbl.na

我正试图从带有R中的rvest的网站上刮取一个表,但出现了一个错误:

打开连接时出错(x,“rb”):HTTP错误404

我怎样才能解决这个问题

我已经尝试了一些选择,但没有一个有效。我不知道我做错了什么。我想知道我是否用错误的方式编码。这似乎很简单,但我解决不了

options(stringsAsFactors = FALSE)

url<- "https://www.tutiempo.net/clima/06-2018/ws-830950.html"

tbl.names <- data.frame(
  "Temperatura Media" = character(0),
  "Temperatura Máxima" = character(0),
  "Temperatura Mínima" = character(0),
  "SLP" = character(0),
  "H" = character(0),"PP" = character(0),
  "VV" = character(0),
  "V" = character(0),"VM" = character(0),
  "VG" = character(0),
  "RA" = character(0),"SN" = character(0),
  "TS" = character(0),
  "FG" = character(0)  )

for (i in 1:31) {
  url <- paste0(url, i)
  tbl.page <- url %>%
    read_html() %>%
    html_nodes(xpath='//*[@id="ColumnaIzquierda"]/div/div[4]') %>%
    html_table()
  names(tbl.page[[1]]) <- names(tbl.names)
  tbl.names <- bind_rows(tbl.names, tbl.page[[1]])
}
选项(stringsAsFactors=FALSE)

url我想你可以用
rvest
tidyverse
来实现

首先,使用
read\u html()

然后,您必须使用感兴趣的信息识别节点。在您使用
html\u节点(“表”)
的情况下,您可以看到在本网站中有5个html表,有趣的信息在第4个节点中:

data %>%
   html_nodes("table")

{xml_nodeset (5)}
[1] <table cellpadding="0" cellspacing="0"><tbody><tr>\n<td class="home"><a href="https://www.tutiempo.net/">El tiempo</a></td>\n<td><a href=" ...
[2] <table cellpadding="0" cellspacing="0"><tr>\n<td><a href="/clima/ws-830950.html">Clima</a></td>\n\t\t\t\t\t<td><a href="/clima/2018/ws-830 ...
[3] <table cellpadding="0" cellspacing="0"><tr>\n<td><span class="social facebook iw-facebook" title="Compartir en Facebook"></span></td>\n<td ...
[4] <table cellpadding="0" class="medias mensuales numspan" style="width:100%;" cellspacing="0">\n<tr>\n<th>Día</th>\n<th><abbr class="tooltip ...
[5] <table cellpadding="0" cellspacing="0" class="info">\n<tr>\n<td>T</td>\n<td>Temperatura media (°C)</td>\n</tr>\n<tr>\n<td>TM</td>\n<td>Tem ...
数据%>%
html_节点(“表”)
{xml_nodeset(5)}
[1] \n\n\n\t\t\t\t\t%
html_节点(“表”)%%>%
.[4] %>%
html_表格(fill=TRUE)%>%
as.data.frame()
一瞥(制表符温度)
意见:32
变量:15
$Día“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“11”、“12”、“13”、“14”、“15”、“16”、“17”、“18”、“19”、“20”、“21”、“22”、“23”和“…
$T“26.1”、“25.1”、“26.7”、“25.7”、“24.7”、“26.5”、“27.2”、“26.1”、“26.6”、“25.2”、“26.6”、“26.3”…
$TM“28”、“28”、“29”、“28”、“28”、“29”、“29”、“29”、“29”、“29”、“27”、“29”、“29”、“29”、“29”、“29”、“29”、“29”、“28”、“28”、“29”、“29”、“27”…
$Tm“24”、“23”、“24”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“23”、“25”、“23”、“23”、“22”、“20”…
$SLP“--”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“,…
$H“74”、“89”、“82”、“85”、“90”、“82”、“68”、“74”、“70”、“68”、“77”、“68”、“70”、“70”、“70”、“70”、“85”、“90”、“82”、“68”、“83”…
$PP“--”、“-”、“-”、“-”、“-”、“-”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0”、“0,…
$VV“9.7”、“8.9”、“10”、“10”、“9”、“8.7”、“10”、“10”、“10”、“9.8”、“10”、“9.7”、“10”、“10”、“10”、“9.7”、“10”、“10”、“10”、“10”、“8.7”、“9.7”、“9.7”、“9.7”、“9.7”、“9.7”和,…
$V“11.3”、“9.1”、“13.7”、“8.5”、“7.2”、“10.6”、“19.8”、“15.9”、“18.1”、“16.7”、“19.3”、“18”、“18”,…
$VM“18.3”、“33.5”、“24.1”、“22.2”、“16.5”、“18.3”、“29.4”、“31.7”、“29.4”、“29.4”、“24.1”、“25.9”…
$VG“--”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“,…
$RA“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o”,“o…”…
$SN“”、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、…
$TS“”、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、…
$FG“、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、…

然后,如果您想使用
write.csv()
rio::export()
,您可以将数据框
tab_temp
保存为
.csv
,但由于表可以由类唯一标识,并且类是第二快的css选择器方法,因此我将检索单个节点(表格),并在课堂上进行匹配

library(rvest)

url ="https://www.tutiempo.net/clima/06-2018/ws-830950.html" 
df = read_html(url) %>% html_node(".mensuales") %>% html_table(fill = TRUE) %>% as.data.frame()

+对你的和我的只有一点不同非常感谢!那太好了!我尝试了旋度库,它更简单,但正如你在输出中看到的,一些变量没有显示它们的值(例如:第4天、第5天、第6天、第10天的温度等等)。似乎有些数据是看不见的,我无法将其删除。你知道解决方法吗?谢谢。不。我不知道为什么这些信息不可见。
tab_temp = data %>%
  html_nodes("table") %>%
  .[4] %>%
  html_table(fill = TRUE) %>%
  as.data.frame()

glimpse(tab_temp)
Observations: 32
Variables: 15
$ Día <chr> "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "…
$ T   <chr> "26.1", "25.1", "26.7", "", "", "", "25.7", "24.7", "26.5", "", "", "", "27.2", "26.1", "26.6", "", "", "", "25.2", "26.6", "26.3"…
$ TM  <chr> "28", "28", "29", "", "", "", "28", "28", "29", "", "", "", "29", "27", "29", "", "", "", "29", "29", "29", "", "", "", "29", "27"…
$ Tm  <chr> "24", "23", "24", "", "", "", "23", "23", "23", "", "", "", "23", "23", "23", "", "", "", "23", "25", "23", "", "", "", "22", "20"…
$ SLP <chr> "-", "-", "-", "", "", "", "-", "-", "-", "", "", "", "-", "-", "-", "", "", "", "-", "-", "-", "", "", "", "-", "-", "-", "", "",…
$ H   <chr> "74", "89", "82", "", "", "", "85", "90", "82", "", "", "", "68", "74", "70", "", "", "", "77", "68", "70", "", "", "", "68", "83"…
$ PP  <chr> "-", "-", "-", "", "", "", "-", "-", "0", "", "", "", "0", "-", "-", "", "", "", "-", "0", "0", "", "", "", "-", "-", "-", "", "",…
$ VV  <chr> "9.7", "8.9", "10", "", "", "", "9", "8.7", "10", "", "", "", "10", "10", "9.8", "", "", "", "9.7", "10", "10", "", "", "", "9.7",…
$ V   <chr> "11.3", "9.1", "13.7", "", "", "", "8.5", "7.2", "10.6", "", "", "", "19.8", "15.9", "18.1", "", "", "", "16.7", "19.3", "18", "",…
$ VM  <chr> "18.3", "33.5", "24.1", "", "", "", "22.2", "16.5", "18.3", "", "", "", "29.4", "31.7", "29.4", "", "", "", "29.4", "24.1", "25.9"…
$ VG  <chr> "-", "-", "-", "", "", "", "-", "-", "-", "", "", "", "-", "-", "-", "", "", "", "-", "-", "-", "", "", "", "-", "-", "-", "", "",…
$ RA  <chr> "o", "o", "o", "o", "", "o", "o", "o", "", "", "", "", "", "o", "o", "o", "o", "o", "o", "", "", "o", "", "", "o", "o", "o", "", "…
$ SN  <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Medias y …
$ TS  <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Medias y …
$ FG  <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Medias y …
library(rvest)

url ="https://www.tutiempo.net/clima/06-2018/ws-830950.html" 
df = read_html(url) %>% html_node(".mensuales") %>% html_table(fill = TRUE) %>% as.data.frame()