2010-12-06 5 views
4

エンコーディングパラメータを設定する方法を知りたいので、テキストをダウンロードするときにページソースで見たときと同じように見えるようにします例えば、Webブラウザで:正しい中国語のエンコーディングでウェブページのテキストをダウンロードする方法

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

すべてのヘルプははるかに高く評価されるだろう:

readLines("http://www.baidu.com/s?wd=r+project")[132] 
[1] "<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 
+2

+1です。 –

+2

ウェブページには、ウィキペディアの「meta-equiv = "content-type" content = "text/html; charset = gb2312">」というメッセージが表示されます。「GB2312は、People's簡体字中国語に使用されている中国語 " –

答えて

3
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>" 
+0

うわー、それは完璧に働いた、ありがとうトン! RCurlまたはXMLパッケージでこの作業を行う方法があるかどうかを知っていますか(私はちょうどそれらが他の場所で言及されているのを見たことがあります)? – JoshuaCrove

+0

この問題は、Webページをダウンロードする前にエンコーディングを知っている必要があるということです。理想的には、url関数はHTMLからのエンコーディングを自動的に検出しますが、そうではありません。エンコーディングを読む必要がある場合は、下記の私のiconvソリューションを参照してください。 +1良い解決策。 –

+0

現時点では、(1)htmlをダウンロードし、(2)エンコーディングメタタグを読み込み、(3)@Tomに示すように、うまくいけば正しいエンコーディングを使ってhtmlを再ダウンロードします。 – JoshuaCrove

3

Webページはウィキペディアが

GB2312が の主要な公式の文字セットに登録され、インターネットの名前 であると言いトップ

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

で言う中国の人民共和国、簡体字中国語の を使用

これはおおよそのようです(でも、間違いかもしれません)。ご使用のプラットフォーム上でサポートされているエンコーディングを見つけるために

iconvlist() 

鉱山で、これは「2312」を含みます。のは、iconvの使用してそれを変換してみましょう:あなたが見つけ、あなたが取得するためにダウンロードした各ウェブページからの符号化パラメータを使用する必要があります長期的に
alt text

:ここ

> 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>" 

は良い測定のためのスクリーンショットですこのエンコーディングは正しい。

+0

ありがとう、これはメタタグに関する情報のためにも役に立ちました。 – JoshuaCrove

+0

あなたのソリューションでiconv(a、from = "gb2312")を試してみると、 "gb2312"エンコーディングを利用できますが、> iconv(a、from = "gb2312")のみを取得します。 [1] NA – JoshuaCrove

0

'エンコーディング'は、HTMLで使用される '文字セット'です。

リンク先のページで、文字セット "charset = gb2312"が指定されています。

encoding = gb2312を指定すると、ソースが正しく戻されます。

しかし、Rはこのように表示されない可能性があります。 RにHTMLを表示せず、Webページのソースを取得するだけです。 HTMLを表示するには、Webブラウザが必要です。

+0

これを試して、動作しません。勝つように見えるのは@Tomを参照してください。 –

関連する問題