2017-01-16 4 views
4

Я хотел бы, чтобы очистить веб-страницу:Исследуя кодирование ошибки

http://www.oricon.co.jp/rank/js/w/2017-01-16/p/4/

Но есть некоторые проблемы с кодировкой:

library(rvest) 
URL = 'http://www.oricon.co.jp/rank/js/w/2017-01-16/p/4/' 
read_html(URL) 

Ошибка в eval(substitute(expr), envir, enclos): преобразование входа не удалось из-за ошибки ввода, байты 0xFA 0xB1 0x90 0xE7 [6003]

Эта страница явно находится на японском языке; без кодирования не требуется в течение первых трех страниц, например:

read_html('http://www.oricon.co.jp/rank/js/w/2017-01-16/p/2/') 
# {xml_document} 
# <html> 
# [1] <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">\n <meta charset="shi ... 
# [2] <body id="container">&#13;\n<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11 ... 

Эта страница ведет себя, как и ожидалось, и я могу извлечь содержимое я хочу без проблем.

Я пытался быть более явным с кодировкой, используя подход, предложенный Хедли на трекере herervest вопросы:

library(httr) 
guess_encoding(content(GET(URL), 'raw')) 
#  encoding language confidence 
# 1 ISO-8859-1  pt  0.72 
# 2 ISO-8859-2  ro  0.44 
# 3  UTF-8    0.10 
# 4 Shift_JIS  ja  0.10 
# 5 GB18030  zh  0.10 
# 6  EUC-JP  ja  0.10 
# 7  EUC-KR  ko  0.10 
# 8  Big5  zh  0.10 
# 9 ISO-8859-9  tr  0.01 

Ни один из них не являются правильными. Язык является неправильным для всех, кроме Shift_JIS и EUC-JP, но оба эти производят подобные ошибки (проблемные коды байт разные):

read_html(URL, encoding = 'Shift_JIS') 

Ошибка в eval(substitute(expr), envir, enclos): входного преобразования не удалось из-за ошибки при вводе информации, байты 0xFA 0xB1 0x90 0xE7 [6003]

read_html(URL, encoding = 'EUC-JP') 

Ошибка в eval(substitute(expr), envir, enclos): вход преобразование не удалось из-за ошибки при вводе информации, байты 0x8F 0x54 0x8A 0xD4 [6003]

Использование некоторых других предложенных кодировок не производит ошибку, по себе, но выход абракадаброй:

cell.xp = '//div[@class="inner" and ./a[contains(@href, "prof")]]' 
read_html(URL, encoding = 'ISO-8859-1') %>% 
    html_nodes(xpath = cell.xp) %>% html_nodes('h2') %>% 
    html_text %>% tail(6) 
# [1] "\u0082æ\u0082Ñ\u0082·\u0082Ä"              
# [2] "\u0083n\u0083b\u0083s\u0081[\u0083G\u0083\u0093\u0083h"        
# [3] "THE [email protected] CINDERELLA GIRLS STARLIGHT MASTER 07 \u0083T\u0083}\u0083J\u0083j!!" 
# [4] "Dear Bride"                   
# [5] "Fantastic Time"                  
# [6] "Hey Ho" 

Романо-алфавитные символы выглядят просто отлично, но хирагана/кандзи/катакана были потеряны/искалечены.

Есть ли кодировка, которая guess_encoding не упоминала, что может решить мою проблему? Есть ли способ выяснить, какие персонажи на странице вызывают проблемы и, надеюсь, их исключают? Что означает значение 6003 в сообщении об ошибке?

sessionInfo для пакета версии справки:

# R version 3.3.1 (2016-06-21) 
# Platform: x86_64-pc-linux-gnu (64-bit) 
# Running under: Ubuntu 14.04.3 LTS 
# 
# locale: 
# [1] LC_CTYPE=en_US.UTF-8  LC_NUMERIC=C    LC_TIME=en_US.UTF-8  
# [4] LC_COLLATE=en_US.UTF-8  LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 
# [7] LC_PAPER=en_US.UTF-8  LC_NAME=C     LC_ADDRESS=C    
# [10] LC_TELEPHONE=C    LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C  
# 
# attached base packages: 
# [1] stats  graphics grDevices utils  datasets methods base  
# 
# other attached packages: 
# [1] rvest_0.3.2.9000 xml2_1.1.0.9000 
# 
# loaded via a namespace (and not attached): 
# [1] httr_1.2.1  magrittr_1.5 R6_2.1.3  tools_3.3.1  withr_1.0.2  
# [6] curl_1.2  Rcpp_0.12.9  memoise_1.0.0 knitr_1.15.1 git2r_0.18.0 
# [11] digest_0.6.11 devtools_1.12.0 

ответ

3

После нашего обсуждения в комментариях: Кодирование должно быть Shift_JISX0213, как Shift_JIS каким-то образом не платформы/установка независимой.

require(rvest) 
url <- "http://www.oricon.co.jp/rank/js/w/2017-01-16/p/4/" 
cell.xp = '//div[@class="inner" and ./a[contains(@href, "prof")]]' 
xml2::read_html(url, encoding = "Shift_JISX0213") %>% 
    html_nodes(xpath = cell.xp) %>% html_nodes('h2') %>% 
    html_text %>% tail(6) 

[1] "よびすて"              
[2] "ハッピーエンド"             
[3] "THE [email protected] CINDERELLA GIRLS STARLIGHT MASTER 07 サマカニ!!" 
[4] "Dear Bride"              
[5] "Fantastic Time"             
[6] "Hey Ho" 

Почему shift_jis должен делать трюк? Даже Тхо она не работает на всех системах:

Посмотрите на заголовок ответа и исходный код:

enter image description here

shift_jis и Shift_JISX0213 работа для меня со следующей установкой: MacOS Sierra 10,12. 2

Session info -------------------------------------------------------------------------------------- 
setting value      
version R version 3.3.1 (2016-06-21) 
system x86_64, darwin13.4.0   
ui  RStudio (1.0.44)    
language (EN)       
collate en_US.UTF-8     
tz  Europe/Vienna    
date  2017-01-16     

Packages ------------------------------------------------------------------------------------------ 
package * version date  source       
curl  2.3  2016-11-24 cran (@2.3)     
devtools 1.12.0  2016-06-24 CRAN (R 3.3.0)     
digest  0.6.11  2017-01-03 cran (@0.6.11)     
httr  1.2.1  2016-07-03 CRAN (R 3.2.5)     
magrittr 1.5  2014-11-22 CRAN (R 3.3.0)     
memoise 1.0.0  2016-01-29 CRAN (R 3.2.3)     
R6   2.2.0  2016-10-05 CRAN (R 3.3.0)     
Rcpp  0.12.9  2017-01-15 Github (RcppCore/[email protected]) 
rvest * 0.3.2.9000 2017-01-01 local       
selectr 0.3-0  2016-08-30 CRAN (R 3.3.0)     
stringi 1.1.2  2016-10-01 CRAN (R 3.3.0)     
stringr 1.1.0  2016-08-19 CRAN (R 3.3.0)     
withr  1.0.2  2016-06-20 CRAN (R 3.3.0)     
XML  3.98-1.5 2016-11-10 CRAN (R 3.3.2)     
xml2  * 1.1.0.9000 2017-01-15 Github (hadley/[email protected]) 
+0

Странно, что этот код не работает для меня, даже с версией разработки 'xml2'. Но спасибо, что указали, что искать в кодировке в исходном коде - я отсканировал поиск чего-то подобного, но не понял. – MichaelChirico

+0

Не могли бы вы добавить информацию о сеансе? Кто-то из Windows, похоже, получил его на работу, но мне все еще не повезло: http://ja.stackoverflow.com/questions/31894/%E3%83%9A%E3%83%BC%E3%82 % B8% E3% 82% 92% E3% 82% B9% E3% 82% AF% E3% 83% AC% E3% 82% A4% E3% 83% 94% E3% 83% B3% E3% 82% В0 % E3% 81% 97% E3% 82% 88% E3% 81% 86% E3% 81% A8% E6% 96% 87% E5% AD% 97% E3% 82% B3% E3% 83% до н.э.% Е3 % 83% 89% E3% 82% A8% E3% 83% A9% E3% 83% BC% E3% 81% 8C% E3% 81% A7% E3% 81% BE% E3% 81% 99/ – MichaelChirico

+0

Просто добавлено Это. Надеюсь, что это поможет – Rentrop

 Смежные вопросы

  • Нет связанных вопросов^_^