R: извлечение «чистого» текста UTF-8 из веб-страницы, очищенной с помощью RCurl

Используя R, я пытаюсь очистить веб-страницу, сохранив текст на японском языке в файл. В конечном счете, это необходимо масштабировать, чтобы обрабатывать сотни страниц ежедневно. У меня уже есть работающее решение на Perl, но я пытаюсь перенести скрипт на R, чтобы уменьшить когнитивную нагрузку при переключении между несколькими языками. Пока у меня не получается. Связанные вопросы, похоже, о сохранении файлов csvи о записи иврита в HTML-файл. Однако мне не удалось собрать решение, основанное на ответах. Изменить: этот вопрос о выводе UTF-8 из R также актуален, но не решен.

Страницы принадлежат Yahoo! Japan Finance и мой Perl-код, который выглядит так.

use strict;
use HTML::Tree;
use LWP::Simple;
#use Encode;
use utf8;

binmode STDOUT, ":utf8";

my @arr_links = ();
$arr_links[1] = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=7203";
$arr_links[2] = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=7201";

foreach my $link (@arr_links){
    $link =~ s/"//gi;
    print("$link\n");
    my $content = get($link);
    my $tree = HTML::Tree->new();
    $tree->parse($content);
    my $bar = $tree->as_text;
    open OUTFILE, ">>:utf8", join("","c:/", substr($link, -4),"_perl.txt") || die;
    print OUTFILE $bar;
}

Этот Perl-скрипт создает CSV-файл, который выглядит так, как показано на скриншоте ниже, с правильными иероглифами и кана, которые можно добывать и манипулировать ими в автономном режиме:

CSV file produced by Perl script

Мой код R, как он есть, выглядит следующим образом. Сценарий R не является точной копией только что приведенного Perl-решения, поскольку он не удаляет HTML и не оставляет текста ( этот ответпредлагает подход с использованием R, но он не работает для меня в этом случае), и у него нет цикла и т. д., но цель та же.

require(RCurl)
require(XML)

links <- list()
links[1] <- "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=7203"
links[2] <- "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=7201"

txt <- getURL(links, .encoding = "UTF-8")
Encoding(txt) <- "bytes"
write.table(txt, "c:/geturl_r.txt", quote = FALSE, row.names = FALSE, sep = "\t", fileEncoding = "UTF-8")

Этот сценарий R генерирует выходные данные, показанные на снимке экрана ниже. В основном мусор.

CSV file produced by R script

Я предполагаю, что существует некоторая комбинация кодирования HTML, текста и файлов, которая позволит мне сгенерировать в R результат, аналогичный тому, который дает Perl-решение, но я не могу найти его. Заголовок HTML-страницы, которую я пытаюсь очистить, говорит, что набор диаграмм - utf-8, и я установил кодировку в вызове getURL и в write.tableв utf-8, но одного этого недостаточно.

Вопрос Как я могу очистить указанную выше веб-страницу с помощью R и сохранить текст в формате CSV в «правильном» японском тексте, а не в том, что выглядит как линейный шум?

Редактировать: я добавил еще один снимок экрана, чтобы показать, что происходит, когда я пропускаю шаг Encoding. Я получаю то, что выглядит как коды Unicode, но не графическое представление символов. Это может быть какая-то проблема, связанная с локалью, но в той же самой локали сценарий Perl действительно обеспечивает полезный вывод. Так что это все еще озадачивает. Информация о моем сеансе: Версия R 2.15.0 Исправлена ​​(2012-05-24 r59442) Платформа: i386-pc-mingw32/i386 (32-разрядная версия) локаль: 1LC_COLLATE=Английский_Соединенное Королевство.1252 2LC_CTYPE=English_United Kingdom.1252
3LC_MONETARY=English_United Kingdom.1252 4LC_NUMERIC=C
5LC_TIME=English_United Kingdom.1252
прилагаемые базовые пакеты: 1статистика графики grDevices использует базу методов наборов данных

enter image description here

15
задан Community 23 May 2017 в 11:45
поделиться