コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

Askしようずぇ

楽しいASK

みんなースメラッパギー。僕ですー。
今日は僕が唯一外部とコミュニケーションしているような気がしているSNSを紹介するよ。その名もAsk.fmだ(4回目の紹介)。

はい、こちらになります。
ask.fm

どんな質問でも割と返答しているのでみんなもどしどし質問しよう!!匿名からでも質問できるぞ。



というわけで、紹介だけで終わるとただの宣伝になってしまって面白くないのでなんか小ネタもセットでやっていきます。

Rubyで雑スクレイピング

百聞はなんとやらと言いますし、とりあえず作ったものがこちらです。

==== 質問 ====
勉強に疲れたときのリラックス方は?
==== 回答 ====
くうねるあそぶ
==== 質問 ====
動物の耳のヘアバンドをつけるなら何の動物がいい?
==== 回答 ====
馬とかいかがかな。地毛の色との相性とかあんまり考えなくてすむし、イロモノも結構あるしでネタにするんだったらありじゃないかなって思う。

実行するとこんな感じになります。こんな感じで今までに僕がしてきた回答と質問をキャッチできます。


ちなみに、HTMLタグで挟まれたやつ拾ってくればできるかな~って思って作ってたんだけど、開始タグと終了タグが一行で収まらないことがあるのでその時は回答と質問がズレちゃいます。まあ、仕様ということで……。あと、回答が全部とれないです。スクロールしないと全部拾えないんですよね。

これは……ガバですね……。


以下、クソース

# encoding: utf-8
require 'net/http'
require 'json'
require 'cgi'
require 'open-uri'
require 'certified'

#### 質問文を抽出
res = Net::HTTP.get(URI.parse('Ask.fmのURL'))
start = '<div class="streamItem_content">'
fin = '</div>'
e = CGI.unescape(res).force_encoding('UTF-8')
re = e.scan(/<h2>(.*)<\/h2>/)

#### 回答を抽出
ans = e.scan(/<div class="streamItem_content">(.*)<p/) # 抽出が美しくない

re.each_with_index do |value, i|
    puts "==== 質問 ===="
    puts re[i]
    puts "==== 回答 ===="
    puts ans[i]
end

質問と回答をzipで落とせたり、APIとかで取得できればいいんですけどね。それはないっぽいです。欲しかったら作るしかないんですかね……。あとhttpsエラー回避のためにやってるコレrequire 'certified'、力技であまりよろしい方法でない気がする……。