簡易感情分析のテキストマイニングで地域振興を考えてみる -Twitterの手動スクレイピング編-

文章を感情分析にかける基本形は前回作った。あとはTwitterから目的の言葉に関するつぶやきデータを持ってくればいい。

つぶやきの取得方法

Gem系

RubyのGemだとつぶやきをリアルタイムで取得する「TweetStream」とか、過去のつぶやきを検索する「Twitte Gem」とかを使えばよさそう。
でもやってみると過去に遡るのは制限があった。2週間前とかそれくらいまでしかいけない。
もっと長い期間のつぶやきが欲しいのでこれは却下。

一応参考にしたサイト。
Ruby: TweetStream でリアルタイムな Twitter のツイートデータを取得する
Twitter Ruby Gem で遊んでみる
Twitter Gem を使って、気になるあの人の生活リズムを覗き見たい…! #loupestudy
RubyのTwitter gemを使ってTwitterのタイムラインを取得する。たくさん。

スクレイピング

Web上から自動でデータを取得してくるのをスクレイピングと呼ぶらしい。これをやるしかなさそう。
しかしTwitterではスクレイピングは禁止になっている。しかもhtmlが動的だから試してみても上手くソースコードを取得できなかった。
ルール的にも自分の技術的にも無理。

仕方ないから殆ど手動でhtmlをコピペするしかない。手順はこんな感じ。
1.Twitterで目的の単語を期間指定して検索
2.ページをひたすらスクロールしてつぶやきを全て読み込む(画面上で読み込まないとhtmlコードに反映されない)
3.ページのhtmlコードを保存
4.Ruby上でhtmlコードを整形してつぶやきのみを取り出す。

twitterのソースコード
Twitterの検索画面のソースコードはこんな感じ。検索したままだと20件しかつぶやきが反映されていない。スクロールして最後までいくと次の20件が読み込まれる。
Twitterの本文は[TweetTextSize]クラスの

タグで囲まれている。本文内にもhtmlのタグがあるからこれも取り除かないといけない。

Nokogiriでソースコードをトリミング

htmlコードをトリミングする時によく使われているのがRubyのライブラリ「Nokogiri」。使い方は下記のサイト等を参照。

[Nokogiriを使ったRubyスクレイピング [初心者向けチュートリアル]]
[Nokogiriを使ったRubyでのスクレイピング 〜初心者編〜]
[RubyでWebスクレイピング]

Twitterのソースコードから本文を抜き出すにはこんな感じ。

require 'nokogiri'

#保存したソースコードファイル「sourcecode」を開いてトリミング
File.open('sourcecode') do |file|
    doc = Nokogiri::HTML(file)
    #[TweetTextSize]クラスのついたpタグの中身を取り出す。
    nakami = doc.css("p.TweetTextSize")
    nakami.each do |tweet|
        #残ったhtmlタグを除外
        text = "#{tweet.inner_text}"
        puts text
    end
end

ただしこのやり方だとつぶやき中のurlとかは残る。
あとはTwitterの検索能力がそのまま反映される。つまり名前に検索単語が入ってるユーザーとかbotがそのまま検索結果に出てくる。

ここまででつぶやきの取得、文章のネガポジ判定のプログラムは出来た。あとは合体させてファイル出力させよう。

LEAVE A REPLY

*
*
* (公開されません)