Как скачать текст веб-страницы с правильной (китайской) кодировкой в ​​R - PullRequest
4 голосов
/ 06 декабря 2010

Я хотел бы знать, как установить параметр кодирования, чтобы при загрузке текста он «выглядел» так же, как когда я видел его на источнике страницы в веб-браузере, например ::

readLines("http://www.baidu.com/s?wd=r+project")[132]
[1] "<div id=\"foot\">&copy;2010 Baidu <span>´ËÄÚÈÝϵ°Ù¶È¸ù¾ÝÄúµÄÖ¸Áî×Ô¶¯ËÑË÷µÄ½á¹û£¬²»´ú±í°Ù¶ÈÔ޳ɱ»ËÑË÷ÍøÕ¾µÄÄÚÈÝ»òÁ¢³¡</span></div>"

Когда это должно отображаться как:

> <div id="foot">&copy;2010 Baidu <span>此内容系百度根据您的指令自动搜索的结果,不代表百度赞成被搜索网站的内容或立场</span></div> 

Любая помощь будет высоко ценится!

# windows 7
sessionInfo()
R version 2.12.0 (2010-10-15)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United Kingdom.1252 
[2] LC_CTYPE=English_United Kingdom.1252   
[3] LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C                           
[5] LC_TIME=English_United Kingdom.1252    

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
[1] XML_3.2-0.1    RCurl_1.4-4.1  bitops_1.0-4.1 rcom_2.2-3.1   rscproxy_1.3-1

loaded via a namespace (and not attached):
[1] tools_2.12.0

Ответы [ 3 ]

3 голосов
/ 06 декабря 2010
con = url("http://www.baidu.com/s?wd=r+project",  encoding = "gb2312")
readLines(con)[132] 
[1] "<div id=\"foot\">&copy;2010 Baidu <span>此内容系百度根据您的指令自动搜索的结果,不代表百度赞成被搜索网站的内容或立场</span></div>"
3 голосов
/ 06 декабря 2010

наверху страницы написано

<meta http-equiv="content-type" content="text/html;charset=gb2312"> 

, что в википедии гласит:

GB2312 - зарегистрированное имя в Интернете для ключевого официального набора символов Китайской Народной Республики,используется для упрощенных китайских символов

Что кажется подходящим (но все же может быть ошибкой).

Чтобы найти поддерживаемые кодировки на вашей платформе:

iconvlist()

по моему, это включает "GB2312".Давайте преобразуем его с помощью iconv:

> a <- readLines("http://www.baidu.com/s?wd=r+project")[132]
> iconv(a, from="gb2312")
[1] "<div id=\"foot\">&copy;2010 Baidu <span>此内容系百度根据您的指令自动搜索的结果,不代表百度赞成被搜索网站的内容或立场</span></div>"

Вот скриншот для хорошей меры:
alt text

В долгосрочной перспективе вам нужно будет найти и использовать параметр кодирования из каждоговеб-страница, которую вы загружаете, чтобы получить правильную кодировку.

0 голосов
/ 06 декабря 2010

'кодировка' - это кодировка, используемая в HTML.

На странице, на которую вы ссылаетесь, указывается кодировка "charset = gb2312".

Указание кодировки = gb2312 возвращает источник правильно.

Однако R, скорее всего, не будет отображать его таким образом. Вы не отображаете HTML в R, просто получаете источник веб-страницы. Вам нужен веб-браузер для отображения HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...