Проблема кодирования R при просмотре веб-страниц - как исправить поврежденный текст? - PullRequest
2 голосов
/ 14 января 2020

При просмотре веб-страниц часть полученного текста была повреждена, очень похоже на чужой текст, когда используется неправильная кодировка. Проблема в том, что кодировка кажется правильной: «UTF-8». Есть ли способ исправить текст, даже если он в правильном формате? Часть кода ниже - проблема, о которой здесь сообщают. Rstudio настроен с кодировкой "UTF-8", а функции, которые изменяют используемую кодировку, всегда возвращают еще больше гиббери sh. Спасибо всем заранее.

library(rvest)

url <- "https://www1.folha.uol.com.br/poder/2020/01/folhas-da-manha-da-tarde-e-da-noite-se-uniram-sob-um-so-titulo-folha-de-spaulo-ha-60-anos.shtml"

title.news <- html_text(read_html(url) %>%
    html_nodes('body') %>%
    html_nodes('main') %>%
    html_nodes('article') %>%
    html_nodes('.block') %>%
    html_nodes('h1'))

title.news <- trimws(gsub(pattern = '\\s+', ' ', title.news))

Encoding(title.news)
[1] "UTF-8"

title.news
[1] "Folhas da Manhã, da Tarde e da Noite se uniram sob um só título, Folha de S.Paulo, há 60 anos"

#Desired Output: Folhas da Manhã, da Tarde e da Noite se uniram sob um só título, Folha de S.Paulo, há 60 anos

Ответы [ 2 ]

1 голос
/ 14 января 2020

Спасибо всем за помощь! Следующий кусок решил проблему

library(rvest)
library(dplyr)
library(httr)

url <- "https://www1.folha.uol.com.br/poder/2020/01/folhas-da-manha-da-tarde-e-da-noite-se-uniram-sob-um-so-titulo-folha-de-spaulo-ha-60-anos.shtml"

pagina.web <- iconv(readLines(url, encoding = 'UTF-8'), 'UTF-8', 'UTF-8', sub = '')

titulo.noticia <- read_html(paste0(pagina.web, collapse = '\n')) %>%
  html_nodes('body') %>%
  html_nodes('main') %>%
  html_nodes('article') %>%
  html_nodes('.block') %>%
  html_nodes('h1') %>%
  html_text()

titulo.noticia

1 голос
/ 14 января 2020

Ответ здесь , но я, честно говоря, не знаю, почему это работает.

Для начала есть несколько неправильно закодированных строк, которые вы можете проверить с помощью utf8::utf8_valid

library(rvest)
#> Loading required package: xml2

url <- "https://www1.folha.uol.com.br/poder/2020/01/folhas-da-manha-da-tarde-e-da-noite-se-uniram-sob-um-so-titulo-folha-de-spaulo-ha-60-anos.shtml"
lines <- readLines(url, warn = FALSE)
lines[!utf8::utf8_valid(lines)]
#> [1] "  Esse trecho est\xe1 em produ\xe7\xe3o para dar suporte aos componentes de chamadas,"
#> [2] "  p\xe1ginas serem republicadas."                                                     
#> [3] "  Trecho de c\xf3digo adicionado para renomear legenda abaixo das publicdades,"

Которые являются комментариями в источнике страницы html. Удаление их заставляет функции работать должным образом

...