没有记录时如何将结果保存为"ND"?西装和R
How to save result as "ND" when there is no record? rvest and R
我有这两个例子html:url1.html ; url2.html
在 URL1.html 中没有信息 (71) 而在 URL2.html 中有。
我在 R 中使用此代码:
library(rvest)
library(tidyverse)
x<-data.frame(
URL=c(1:2),
page=c(paste(readLines("url1.html"), collapse="\n"),
paste(readLines("url2.html"), collapse="\n"))
)
for (i in 1:nrow(x)){
html<-x$page[i]%>% unclass() %>% unlist()
read_html(html,encoding = "ISO-8859-1") %>%
rvest::html_elements(xpath = '//*[@id="principal"]/table[2]') %>%
rvest::html_elements(xpath = '//div[@id="tituloContext"]') %>%
html_text()%>%
str_replace_all(.,"[\n\r\t]+", "")%>%
stringr::str_trim( ) -> x$title[i]
}
结果:标题
[1] "Â CARRINHO DE LIXO PARA LIMPEZA URBANA"
character(0)
问题:虽然我从 URL1 中获取了正确的内容,但我想在它不存在时保存“-”值(例如 URL2)
预期输出:不可用(ND)。
[1] "Â CARRINHO DE LIXO PARA LIMPEZA URBANA"
[1] "ND"
知道如何解决这个问题吗?
是否也可以优化此代码?
我们可以检查 length
如果它是 0(length(character(0))
是 0
),将值更改为 'ND'
for (i in seq_len(nrow(x))){
html<-x$page[i]%>%
unclass() %>%
unlist()
read_html(html,encoding = "ISO-8859-1") %>%
rvest::html_elements(xpath = '//*[@id="principal"]/table[2]') %>%
rvest::html_elements(xpath = '//div[@id="tituloContext"]') %>%
html_text()%>%
str_replace_all(.,"[\n\r\t]+", "")%>%
stringr::str_trim( ) -> tmp
if(length(tmp) == 0) tmp <- "ND"
x$title[i] <- tmp
}
-正在检查
> x$title
[1] "CARRINHO DE LIXO PARA LIMPEZA URBANA" "ND"
我有这两个例子html:url1.html ; url2.html
在 URL1.html 中没有信息 (71) 而在 URL2.html 中有。
我在 R 中使用此代码:
library(rvest)
library(tidyverse)
x<-data.frame(
URL=c(1:2),
page=c(paste(readLines("url1.html"), collapse="\n"),
paste(readLines("url2.html"), collapse="\n"))
)
for (i in 1:nrow(x)){
html<-x$page[i]%>% unclass() %>% unlist()
read_html(html,encoding = "ISO-8859-1") %>%
rvest::html_elements(xpath = '//*[@id="principal"]/table[2]') %>%
rvest::html_elements(xpath = '//div[@id="tituloContext"]') %>%
html_text()%>%
str_replace_all(.,"[\n\r\t]+", "")%>%
stringr::str_trim( ) -> x$title[i]
}
结果:标题
[1] "Â CARRINHO DE LIXO PARA LIMPEZA URBANA"
character(0)
问题:虽然我从 URL1 中获取了正确的内容,但我想在它不存在时保存“-”值(例如 URL2)
预期输出:不可用(ND)。
[1] "Â CARRINHO DE LIXO PARA LIMPEZA URBANA"
[1] "ND"
知道如何解决这个问题吗?
是否也可以优化此代码?
我们可以检查 length
如果它是 0(length(character(0))
是 0
),将值更改为 'ND'
for (i in seq_len(nrow(x))){
html<-x$page[i]%>%
unclass() %>%
unlist()
read_html(html,encoding = "ISO-8859-1") %>%
rvest::html_elements(xpath = '//*[@id="principal"]/table[2]') %>%
rvest::html_elements(xpath = '//div[@id="tituloContext"]') %>%
html_text()%>%
str_replace_all(.,"[\n\r\t]+", "")%>%
stringr::str_trim( ) -> tmp
if(length(tmp) == 0) tmp <- "ND"
x$title[i] <- tmp
}
-正在检查
> x$title
[1] "CARRINHO DE LIXO PARA LIMPEZA URBANA" "ND"