Я хотел бы, чтобы очистить веб-страницу:Исследуя кодирование ошибки
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"> \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
Странно, что этот код не работает для меня, даже с версией разработки 'xml2'. Но спасибо, что указали, что искать в кодировке в исходном коде - я отсканировал поиск чего-то подобного, но не понял. – MichaelChirico
Не могли бы вы добавить информацию о сеансе? Кто-то из 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
Просто добавлено Это. Надеюсь, что это поможет – Rentrop