R Web技術 スクレイピング

【Web技術】Rでのスクレイピングにおける文字コードの確認と変換

この記事は約3分で読めます。

 

 

文字コードとは?

 

 コンピュータ内部では文字であろうと画像であろうと、あらゆるものを数値で処理しています。

 

文字コードとはPC上で文字を表示させる仕組みで、ひらがな・カタカナ・漢字にそれぞれ特定の数値を当てはめて区別する仕組みです。

 

ちなみに日本語の場合は、macやlinuxで使われている「UTF-8」とWindowsで使われている「Shift_JIS」の2つが主流です。

 

ちなみに世界では「UTF-8」が主流となりつつあり、もしWindows版のプログラムでUTF-8で作成されたHTMLを読み込む際、文字データが正確に表示されないいわゆる文字化けが起こることがあります。

 

 

Rを使って文字コードを変換する

 

  まずひらがなの「あ」の文字コードを見てみます。

 

文字コードは16進法という「0123456789 a b c d e f」の16個の英数字で構成された特殊な記述法で表現されます。

 

 

> charToRaw(“あ”)
[1] 82 a0
> charToRaw(“た”)
[1] 82 bd

> charToRaw(“w”)
[1] 77

 

 

Windowsに使われているShift_JISだと1つの日本語を2つの数値で返し、アルファベットは1つの数値で返します。

 

ちなみにRでは文字コードを変換することができます。というわけでShift_JISをmacやlinuxで使われているUTF-8に変換してみます。

 

WindowsではUTF-8は文字化けするんじゃないかったの?と思いますがWindows版Rでは、UTF-8の文字コードでも文字化けしません。

 

 

> a<-“あ”

> a<-iconv(a, to = “UTF-8”)
> charToRaw(a)
[1] e3 81 82

 

 UTF-8では日本語の文字を3つの数値を使って表現します。

 

 

対象サイトの文字コードを確認

 

スクレイピングする際に、対象のサイトの文字コードを確認しないとデータをスクレイピングしても上手く関数が動かないことがあるので、まず確認する必要があります。

 

>library(rvest)

>library(dplyr)

>x<-read_html(“http://www.tkstock.site/“)

> x%>%html_node(xpath=”//meta[@content |@charset]”)
{xml_node}
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

 

今回はUTF-8でしたが、もし対象とするサイトの文字コードがUTF-8でなかったときはread_html()に、encording=”UTF-8”という引数を指定して文字コードをUTF-8に変換しておくのが無難です。

 

 

 x<-read_html(“http://www.tkstock.site/“,encording=”UTF-8”)

 

ですがテキストマイニングなどを行う場合は、CP932の方がオススメです。

 

x<-read_html(“http://www.tkstock.site/“,encording=”CP932”)

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました