scalaでtwitter searchを試す
Scalaスケーラブルプログラミングを読みながらscalaのソースコードをいろいろ試しています。
33章と量も多く、なかなか使いこなすのが難しいのでいろいろ試してみたいと思います。
「search.twitter」の内容を返すサンプルを試す
「http://search.twitter.com/search?q=tenshoku」というサイトがあることを知りませんでした。「http://twitter.com/#!/search/tenshoku」とは違う検索結果を返すことに気づきました。
サンプルで利用させて頂いたコードはこちらです。HashTagSearch.scala
「HashTagSearch.scala」を実行する
Windows環境のコマンドプロンプトで実行をすると文字化けが起こったので、実行結果をFileに出力することにしました。
ローンパターン(loan pattern)というものもあるようだがとりあえず、Fileに出力できるようにしました。
(参考:How to write to a file in scala?)
import scala.xml._ import scala.io.Source import java.io.PrintWriter object HashTagSearch2{ def main( args:Array[String] ) { System.setProperty("http.proxyHost","proxy.host.jp") System.setProperty("http.proxyPort","8080") val out = new PrintWriter("sample.txt") val url = "http://search.twitter.com/search.atom?q=%s".format( args.first ) ( XML.loadString( Source.fromURL( url, "utf-8").getLines.mkString) \\ "entry"). foreach{ e => val cxml = XML.loadString("<c>" + (e \\ "content" text ) + "</c>") println( (e \\ "author" \\ "name" text) + ":" + cxml.child.text) out.println((e \\ "author" \\ "name" text) + ":" + cxml.child.text) } out.close } }
ブラウザで「http://search.twitter.com/search.atom?lang=ja&q=tenshoku」を押下すると
下記の様な検索結果が返却されます。HashTagSearchでは、entryタグを抽出し、抽出した要素に
対して「e =>処理」を実行しています。foreachでは、「content」を「c」に置き換えて処理を行ってます。
textは、タグを消してテキスト情報をそのまま出力する処理です。
<entry> <id></id> <published></published> <link type="text/html" href="http://twitter.com/tenshokukango/statuses/80155039427072000" rel="alternate"/> <title></title> <content type="html"></content> <updated></updated> <link type="image/png" href="http://a0.twimg.com/profile_images/1381477303/kango_normal.gif" rel="image"/> <twitter:geo></twitter:geo> <twitter:metadata> <twitter:result_type>recent</twitter:result_type> </twitter:metadata> <twitter:source><a href="http://twittbot.net/" rel="nofollow">twittbot.net</a></twitter:source> <twitter:lang>ja</twitter:lang> <author> <name>tenshokukango (ミヤビ)</name> <uri>http://twitter.com/tenshokukango</uri> </author> </entry>
処理を実行すると下記の様な形で、「sample.txt」に保存されます。
tenshokukango (ミヤビ):知ってました?3年以上の病院勤務者であれば月収45万以上が確定します。http://amba.to/lOxxUU 月収45万!看護師の転職を探すなら登録無料のナースパワー #Tenshoku #kango #kangoshi #kyujin #muryou JimujobTokyoIn (CJ-都内事務求人):大手医薬品メーカーでのMRサポート事務のお仕事です http://dlvr.it/W6Kqq #kyujin #tenshoku JimujobTokyoIn (CJ-都内事務求人):建築関連会社での社保事務・データ入力のお仕事です http://dlvr.it/W6KWT #kyujin #tenshoku ITJobTokyoOut (CJ-東京都下IT求人):【IT求人】 <IBM>金融系 【PM/PL:Webアプリケーション開発】 http://dlvr.it/W6KkW #kyujin #tenshoku Careerjet_jp (CJ-キャリアジェット):【求人】 【千葉県我孫子市】介護老人保健施設の常勤看護師募集☆少人数の利用者さんたちとの交流を望まれる看護師さんにお勧めです!【TS-CB093】 http://dlvr.it/W6KVp #kyujin #tenshoku Careerjet_jp (CJ-キャリアジェット):【求人】 【千葉県鴨川市】医療から介護までトータルに施設が併設の地域完結型病院です!! 急性期から療養期までトータルにサポート可能で、精神病院や介護施設も併設している病院です!【TS-CB094】 http://dlvr.it/W6KT5 #kyujin #tenshoku tenshokukango (ミヤビ):あなたの代わりに給料の交渉もしてくれます。http://amba.to/lOxxUU 月収45万!看護師の転職を探すなら登録無料のナースパワー #Tenshoku #kango #kangoshi #kyujin #muryou LEC_PROCAREER (LEC-procareer):【緊急募集】LECでは業務拡大により職業訓練(基金訓練)のクラス運営+就職支援業務担当者を大募集中!是非ご応募下さい! http://ht.ly/3OBib #shukatsu #syukatsu #syusyoku #shusyoku #tensyoku #tenshoku tenshokukango (ミヤビ):期間を決めてリゾート気分を味わいながら看護師の仕事ができちゃうんです。http://amba.to/lOxxUU 月収45万!看護師の転職を探すなら登録無料のナースパワー #Tenshoku #kango #kangoshi #kyujin #muryou tenshokukango (ミヤビ):転職を考えています?このサイト知ってますか?あなたの代わりに病院との交渉をしてくれます。http://amba.to/lOxxUU 月収45万!看護師の転職を探すなら登録無料のナースパワー #Tenshoku #kango #kangoshi #kyujin #muryou tenshokukango (ミヤビ):実はもっと給料を貰えるって思っている人が少ないみたいです。http://amba.to/lOxxUU 月収45万!看護師の転職を探すなら登録無料のナースパワー #Tenshoku #kango #kangoshi #kyujin #muryou yamanekopanda (山 猫):RT @seseseico: 【仕事情報】博多駅近くで一般事務のお仕事。8:50〜17:10で残業ほとんどありません。7/1スタートで時給900円。過去5年間内で金融業界経験のある方お待ちしております。#haken #baito #tenshoku #kyujin sexypon (ぽん):RT @seseseico: 【仕事情報】博多駅近くで一般事務のお仕事。8:50〜17:10で残業ほとんどありません。7/1スタートで時給900円。過去5年間内で金融業界経験のある方お待ちしております。#haken #baito #tenshoku #kyujin ryonagai_sigoto (長井亮の仕事塾):「仕事」以外に、目に見えない仕事の報酬は自分にとってなんでしょうか? ##shukatsu #shushoku #tenshoku tenshokukango (ミヤビ):自分が動かなければ何も変わらないんです。それは給料も同じですよ。http://amba.to/lOxxUU 月収45万!看護師の転職を探すなら登録無料のナースパワー #Tenshoku #kango #kangoshi #kyujin #muryou
もう少しいろいろ試して、Twitterで抽出した内容をDB等に保存できるようにしたいと思います。