それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

日経の社説を一気に取得する。自分で読むのはバカバカしいからRubyに日経を読ませる。

新聞比べ読みをしたらいいとトラックバックがあったんだけど*1

僕も日経の何がいいかよくわからん。エライ人が日経嫁とかウルサイんですね。僕も言われたことあります。

あんなもの自分で読むとストレスたまるので、とりあえずプログラムに読ませてみた。

日経の社説を取得するプログラム

#!/usr/bin/env ruby
#日経新聞の社説。
require 'rubygems'
require 'mechanize'

m = Mechanize.new
m.get "http://www.nikkei.com/news/editorial/"
#m.page.search('/html/body//h2[contains(., "社説")]').first.parent
list = m.page.search('//h4/a').map{|e| [e.text,"http://www.nikkei.com"+e["href"]] }
list.each{|e| 
    m.get e[1]
    title = m.page.search('h4.cmn-article_title.cmn-clearfix').text.strip
    date  = m.page.search('h4.cmn-article_title.cmn-clearfix').text.strip
    body  = m.page.search('div.cmn-article_text.JSID_key_fonttxt').text.gsub(/\t/, "")
    open("#{title}-#{date}.txt","w"){|f| f.write body}
}

Rubyに読ませてみた。
(スクリーンショット 2012-02-21 3.18.12)

Rubyに代わりに読んでもらおう。

$KCODE ='u'
system("cat *.txt > all.nikkei")
text = open("all.nikkei").read
regex = /[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+/
words = text.scan regex
counts = Hash.new(0)
words.each{|e| counts[e]  =  counts[e] + 1 }
sorted = counts.to_a.sort{|a,b| b[1] <=> a[1]}
sorted.each{|e| puts "#{e[0]}=>#{e[1]}"}
puts "-"*10
puts words.size

結果

「てにをは」などがこれだけ

の=>426 を=>305 が=>187 に=>180 は=>158 で=>86  と=>57  も=>56  や=>53  な=>51  だ=>39  い=>37 し=>35  する=>33 した=>31 り=>26 る=>25 
キーワードはこんな感じ。
ガス=>25 年=>23 政府=>22 日本=>22 
天然=>16 高=>15 人=>15 東電=>15 強=>13 考=>12 続=>12 得=>11 問題=>11 受=>11
中国=>11
対応=>10
研究=>10
エネルギー=>10
合=>10
必要=>10
上=>9
課題=>9
企業=>9
日銀=>9
電力=>8
送電網=>8
テロ=>8
温度計=>7

結果

今週の日経さんは「電力と日本と、政府と、中国」にご執心で、「高い〜」や「強い〜」が好きなようですね。そしてやたら天然ガスにご執心です。


これだけでもう何書いてあるか想像が付くわ。。。

tf/idf的には逆も見たいところ。

一回だけ出てくる、特徴語を見たらなんと「国会」が一回だけ。まぁ◯◯党や◯◯大臣というもっと具体例で言及してるんかねぇ。でもそれ政府なんだよねぇ。やっぱ国会は国会の機能は果たしてないってことか。
TPP、FRBやメルコジへの言及は少ないなぁ。

*1:http://d.hatena.ne.jp/Rootport/20120220/1329743264

ソフトバンクのWEB請求書もscraperにかけてしまう

ついでだから、ソフトバンクのWEB明細もスクレーパー書いておいた。

テレビ見ながら、ついでにソフトバンクのWEB明細も切り取っておいた。

mysoftbankサイトから明細を取ってくる。

#!/usr/bin/env ruby
require 'rubygems'
require 'kconv'
require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
require 'mechanize'
url ="https://my.softbank.jp/msb/d/top"

id="08042xxxxx"
pw="**password**"

m = Mechanize.new
m.get url
m.page.forms[0]["msn"]=id
m.page.forms[0]["password"]=pw
m.page.forms[0].submit 

m.page.links_with(:text=> /請求書/ ).first.click
##reload
m.page.forms[0].submit 

puts m.page.search('div#id4_C1').first.to_html.toutf8
puts m.page.search('//th[contains(.,"料金内訳")]').first.parent.parent.parent.parent.to_html.toutf8

ソフトバンクはリクエスト処理素直だった。ただしHTMLのなかにdiv#bodyが何個もあって発狂しそうだった。

請求書や明細書はPDFでメール添付してくれたらいいのに。。。

WEB明細ってアレでしょ

CO2削減効果ってのは、労働者を減らしたから、その人達が仕事や通勤で排出するCO2が減ったみたいな。

その分コストが下がって、仕事がなくなった分、世間は狭くなった。

iTerm2が意外と使えそう

()

デフォルトのターミナルをiTerm2にする。

()
背景を入れるとおしゃれ。しかも背景画像にさらに透過するので面白い

(デフォルトターミナルにする。)



もはや見にくいと思うのだが。

()



背景画像に単色が多いとそうでもないよ。


()



ターミナルに疲れたので iTerm2 を使うことにした。

au WEB請求書ページを取得する。

AUの料金照会ページを取得するサンプル。

auのWEB明細を取得する。

require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

require 'rubygems'
require 'mechanize'

#au カスタマーサポートログインid
id = "my_user_id"
pw = "**pass_word**"
#au 端末 暗証番号
mpw = "1234"

login_url = "https://cs.kddi.com/"
#初回ログイン
m = Mechanize.new
m.user_agent_alias = 'Windows IE 7'
m.get login_url
m.page.forms[1].fields[0].value = id
m.page.forms[1].fields[1].value = pw
m.page.forms[1].submit
#ログイン後トップページ
m.page.links.select{|e| e.text =~ %r"請求額照会" }.first.click
#携帯電話選択画面。
m.page.forms[1].submit #とりあえず、一番目の携帯電話を選択して送信。
#携帯電話の暗証番号
m.page.forms[0].fields.select{|e| e.type=="password"}.first.value= mpw
m.page.forms[0].submit
#リダイレクト画面
m.page.forms[0].submit
#請求画面のHTMLを取得する。
puts m.page.search('#detail_11').first.to_html.toutf8

auのスクレーパーのポイント

UserAgentをIEにする。UserAgent設定をしないとログイン弾かれた。これに気づくまでに30分かかるなど。
ログインフォームなどは基本的に#idでアクセスできるので便利。
PDFのダウンロードはMechanizeのバグのせいでできない 。(ICONVがWindows-31Jをパースできない。)


WEB明細ってCO2削減効果あるのかね。

どこでも、WEB明細・WEB閲覧っていうけど、郵便やヤマトのインフラは明細が無かろうが、毎日同じ場所を巡回してるんだし。
むしろ既存インフラに乗っけてたほうが量による最適化でコストメリットがあると思うけどなぁ。


もしWEB明細するなら、僕のEvernoteアカウントに毎月放り込んでほしいです。
見るために取りに行くの面倒だし。ワンクリックで見れないし。


WEB明細でCO2削減とかいう欺瞞。