2017-12-06 3 views
2

rvest 패키지를 사용하여 프랑스어 웹 사이트를 긁어 모으고 있습니다.rvest로 웹 스크랩을 할 때 프랑스어 유니 코드의 얽힘

"Aloxe-Corton (Appellation Village, VIGNOBLE DE LA CÃ\u0094TE DE BEAUNE)"   
"Auxey-Duresses (Appellation Village, VIGNOBLE DE LA CÃ\u0094TE DE BEAUNE)"  
"Bâtard-Montrachet (Appellation Grand Cru, VIGNOBLE DE LA CÃ\u0094TE DE BEAUNE)" 

의 HTML 소스 : 내가 분음 부호 엉망 문자 (아래 라인 3 참조)를 참조

Aloxe-Corton (Appellation Village, VIGNOBLE DE LA CÔTE DE BEAUNE) 
Auxey-Duresses (Appellation Village, VIGNOBLE DE LA CÔTE DE BEAUNE) 
Bâtard-Montrachet (Appellation Grand Cru, VIGNOBLE DE LA CÔTE DE BEAUNE) 

을 대신 :

library(rvest) 
url <- "https://www.vins-bourgogne.fr/nos-vins-nos-terroirs/tous-les-bourgognes/toutes-les-appellations-de-bourgogne-a-votre-portee,2378,9172.html?&args=Y29tcF9pZD0xMzg2JmFjdGlvbj12aWV3RnVsbExpc3RlJmlkPSZ8" 
s <- read_html(url) 
s %>% html_nodes('#resultatListeAppellation .lien') %>% html_text() 
내가 볼 것으로 예상 페이지에 utf-8로 인코딩 되었음이 표시됩니다. html_text()에서 guess_encoding()을 사용하면 utf-8 (1.00 신뢰도) 또는 windows-1252 (0.73 신뢰도)를 제안합니다. 로 인코딩 변경 창-1252 도움이되지 않는 사항 :

"Aloxe-Corton (Appellation Village, VIGNOBLE DE LA CÔTE DE BEAUNE)"                     
"Auxey-Duresses (Appellation Village, VIGNOBLE DE LA CÔTE DE BEAUNE)"                    
"Bâtard-Montrachet (Appellation Grand Cru, VIGNOBLE DE LA CÔTE DE BEAUNE)" 

나는 다른 프랑스어 웹 사이트 (또한 인코딩 UTF-8)에 동일한 코드를 시도 :

x <- read_html('http://www.lemonde.fr/disparitions/article/2017/12/06/johnny-hallyday-c-etait-notre-seule-rock-star-la-france-perd-son-icone-du-rock_5225507_3382.html') 
x %>% html_nodes('.taille_courante+ p , .croix_blanche , .tt2') %>% html_text() 

지금 내가 얻을 분음 부호 기타 :

[1] "Johnny Hallyday : « C’était notre seule rock star », « La France perd son icône du rock »"                                               
[2] "« Comme toute la France, mon cœur est brisé, a déclaré à l’Agence France-Presse (AFP) la chanteuse Sylvie Vartan, qui fut la première épouse de Johnny Hallyday, et mère de leur fils, David, né en 1966. J’ai perdu l’amour de ma jeunesse et rien ne pourra jamais le remplacer. »" 

어디에서 첫 번째 웹 사이트에 문제가 있다고 생각하십니까? 또는 고치는 방법?

답변

0

이것은 이상한 웹 사이트입니다. 다음은 자바 스크립트 코드에 주석처럼

lines[!utf8::utf8_valid(lines)] 
#> [1] "// on supprime l'\xe9ventuel cookie"                    
#> [2] "//Ouverture et fermeture de l'encart r\xe9saux sociaux lors d'un clic sur le bouton"        
#> [3] "//Cr\xe9ation de l'iframe facebook \xe0 la premi\xe8re ouverture de l'encart pour qu'elle fasse la bonne largeur" 
#> [4] "//fermeture de l'encart r\xe9saux sociaux lors d'un clic ailleurs sur la page" 

: 여기서 문제가되는 라인입니다

lines <- readLines(url, warn = FALSE) 
all(utf8::utf8_valid(lines)) 
#> [1] FALSE 

: 그것은 모든 유효한 UTF-8이 아닙니다. 나는 read_html이 페이지가 모든 유효한 UTF-8이 아니며 Windows-1252 또는 다른 8 비트 코딩 스키마로 인코딩을 해석한다는 것을 알고 있다고 생각합니다.

당신은 잘못된 JS 세그먼트를 제거하여이 문제를 해결하기 위해 시도 할 수는 :

content <- paste(lines[utf8::utf8_valid(lines)], collapse = "\n") 
content %>% read_html() %>% html_nodes('#resultatListeAppellation .lien') %>% html_text() 

이 예상되는 출력을 제공합니다.

관련 문제