在试图抓住一些网站的抵押贷款利率时,选项标签中的“< 80%”似乎导致了错误。
library(rvest)
url <- "https://vdvconseil.be/nl/hypothecaire-leningen/bereken-uw-hypothecaire-lening/"
page <- read_html(url)
page %>% html_nodes("option")
结果
{xml_nodeset (38)}
[1] <option value="72">1/1/1 CAP 1,56 (voorwaarden) +1,56/-1,56 Q:\n\t\t\t\t\t\t\t\n\n\t\t\t\t</option>
[2] <option value="50">1/1/1 cap 1,74 (voorwaarden) +1,74/-1,74 Q:Tot 80% T:1,74%</option>
...
虽然我期待看到:
<option value="72" >1/1/1 CAP 1,56 (voorwaarden) +1,56/-1,56 Q:<85% T:1,56%</option>
正如您所看到的,以“&lt; 80%”开头的整个位已被标签/换行符删除/替换。 有没有办法避免这种情况?
答案 0 :(得分:2)
只需进行一些预处理即可修复非标准HTML:
library(rvest)
library(stringi)
url <- "https://vdvconseil.be/nl/hypothecaire-leningen/bereken-uw-hypothecaire-lening/"
doc <- readLines(url)
将所有<
标记中的所有原始<
替换为<option…
:
doc[which(grepl("<option", doc))] <-
stri_replace_all_regex(doc[which(grepl("<option", doc))],
"<([[:digit:]]+)", "<$1")
现在回去阅读和处理文件:
page <- read_html(paste0(doc, collapse=""))
opt <- page %>% html_nodes("option")
html_text(opt)
## [1] "1/1/1 CAP 1,56 (voorwaarden) +1,56/-1,56 Q:<85% T:1,56%"
## [2] "1/1/1 cap 1,74 (voorwaarden) +1,74/-1,74 Q:Tot 80% T:1,74%"
## [3] "5/5/5 cap 1,51 (voorwaarden) +1,51/-1,51 Q:<85% T:1,51%"
## [4] "5/5/5 cap 1,67 (voorwaarden) +1,67/-1,67 Q:\t\t\t\t\t\t\t\t\t\t\t"
## [5] "10/5/5 (voorwaarden) +1,95/-1,95 Q:<85% T:1,95%"
## [6] "10/5/5 (voorwaarden) +1,96/-1,96 Q:<80% T:1,96%"
## [7] "10/5/5(Voorwarden) +2/-2,11 Q:80 à 100% T:2,11%"
## [8] "Vast 10 jaar (voorwaarden) Q:<85% T:1,44%"
## [9] "Vast 10 jaar (voorwaarden) Q:<80% T:1,47%"
## [10] "Fxed 10 yaar (voorwaarden) Q:<90% T:1,60%"
## [11] "Vast 10 jaar Q:80 à 100% T:1,62%"
## [12] "Vast 13 jaar (voorwaarden) Q:<80% T:1,63%"
## [13] "Vast 13 jaar (voorwaarden) Q:80 à 100% T:1,78%"
## [14] "Vaste maandelijkse accordion 15-18 jaar Q:<80% T:1,58%"
## [15] "Vaste maandelijkse accordion 15-18 jaar Q:<100% T:1,73%"
## [16] "Vast 15 jaar (voorwaarden) Q:<85% T:1,81%"
## [17] "Vast 15 jaar (voorwaarden) Q:<80% T:1,86%"
## [18] "Vaast 15 jaar (voorwaarden) Q:<90% T:1,89%"
## [19] "Vast 15 jaar (voorwaarden) Q:80 à 100% T:2,01%"
## [20] "Vast 17 jaar (voorwaarden) Q:<90% T:1,97%"
## [21] "Vast 18 jaar (voorwaarden) Q:<80% T:2,00%"
## [22] "Vast 18 jaar (voorwaarden) Q:<85% T:2,03%"
## [23] "Vast 18 jaar (voorwaarden) Q:<100% T:2,14%"
## [24] "Vaste maandelijkse accordéon 20-25 jaar Q:<80 % T:1,79%"
## [25] "Vaste maandelijkse accordéon 20-25 jaar Q:80 à 100% T:1,94%"
## [26] "Vast 20 jaar (voorwaarden) Q:<85% T:2,03%"
## [27] "Vaast 20 jaar (voorwaarden) Q:<90% T:2,10%"
## [28] "Vast 20 jaar (voorwaarden) Q:<80% T:2,14%"
## [29] "Vast 20 jaar (voorwaarden) Q:80 à 100% T:2,29%"
## [30] "Vast 22 jaar Q:<90% T:2,23%"
## [31] "Mensualités fixes accordéon 25-30 ans Q:<80 % T:1,96%"
## [32] "Vaste maandelijkse accordéon 20-25 jaar Q:80 à 100% T:2,11%"
## [33] "Vast 25 jaar (voorwaarden) Q:<80% T:2,28%"
## [34] "Vast 25 jaar (voorwaarden) Q:<90% T:2,32%"
## [35] "Vast 25 jaar (voorwaarden) Q:<85% T:2,36%"
## [36] "Vast 25 jaar (voorwaarden) Q:80 à 100% T:2,43%"
## [37] "Vast 30 jaar Q:<100% T:2,88%"
## [38] "Vast 30 jaar (voorwaarden) Q:<95% T:3,10%"