Sử dụng R, tôi đang cố gắng để cạo một trang web lưu văn bản, đó là tiếng Nhật, vào một tệp. Cuối cùng, điều này cần phải được mở rộng để giải quyết hàng trăm trang trên cơ sở hàng ngày. Tôi đã có một giải pháp khả thi trong Perl, nhưng tôi đang cố gắng di chuyển tập lệnh sang R để giảm tải nhận thức về chuyển đổi giữa nhiều ngôn ngữ. Cho đến nay tôi không thành công. Các câu hỏi liên quan dường như là this one on saving csv files và this one on writing Hebrew to a HTML file. Tuy nhiên, tôi đã không thành công trong việc trộn lẫn với nhau một giải pháp dựa trên các câu trả lời ở đó. Chỉnh sửa: this question on UTF-8 output from R is also relevant but was not resolved.R: trích xuất văn bản UTF-8 "sạch" từ một trang web được cạo bằng RCurl
Các trang này đến từ Yahoo! Nhật Bản Tài chính và mã Perl của tôi trông như thế này.
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;
}
kịch bản Perl này tạo ra một tập tin CSV mà trông giống như hình dưới đây, với kanji phù hợp và kana có thể được khai thác và chế tác ẩn:
đang R của tôi, chẳng hạn như nó là, trông giống như sau. Kịch bản R không phải là bản sao chính xác của giải pháp Perl vừa được đưa ra, vì nó không loại bỏ HTML và để lại văn bản (this answer đề xuất phương pháp sử dụng R nhưng nó không hoạt động trong trường hợp này) và nó không không có vòng lặp và như vậy, nhưng mục đích là như nhau.
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")
Tập lệnh R này tạo ra kết quả được hiển thị trong ảnh chụp màn hình bên dưới. Về cơ bản rác.
tôi giả sử rằng có một số sự kết hợp của HTML, văn bản và mã hóa tập tin đó sẽ cho phép tôi tạo ra trong R là một kết quả tương tự như của các giải pháp Perl nhưng tôi không thể tìm thấy nó. Tiêu đề của trang HTML mà tôi đang cố gắng xóa cho biết biểu đồ là utf-8 và tôi đã đặt mã hóa trong cuộc gọi getURL
và trong hàm write.table
thành utf-8, nhưng điều này không đủ.
Câu hỏi Làm thế nào tôi có thể cạo trang web trên sử dụng R và lưu văn bản như CSV trong "cũng như hình thành" văn bản tiếng Nhật chứ không phải là cái gì đó trông giống như tiếng ồn đường?
Chỉnh sửa: Tôi đã thêm ảnh chụp màn hình khác để hiển thị những gì xảy ra khi tôi bỏ qua bước Encoding
. Tôi nhận được những gì trông giống như mã Unicode, nhưng không phải là đại diện đồ họa của các nhân vật. Nó có thể là một loại vấn đề liên quan đến miền địa phương, nhưng trong cùng một ngôn ngữ chính xác, kịch bản Perl cung cấp đầu ra hữu ích. Vì vậy, điều này vẫn còn khó hiểu. tôi thông tin phiên: R phiên bản 2.15.0 Patched (2012-05-24 r59442) Hệ điều hành: i386-pc-mingw32/i386 (32-bit) ngôn ngữ: 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 quốc Anh.1252
gói cơ bản kèm theo: 1 số liệu thống kê đồ họa grDevices utils bộ dữ liệu phương pháp cơ sở
có thể bạn không cần 'Mã hóa (txt) <-" byte "' và nó hoạt động tốt trong môi trường của tôi. – kohske
@kohske, cảm ơn đề xuất này. Tôi đã thử khác mà không có 'Encoding()'; tiếc là tôi đã không thành công. – SlowLearner