スポンサーリンク

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

 

 

文字コードとは?

 

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

 

文字コードとは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”)

 

 

スポンサーリンク

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする