Rubyでのクローラー開発でデバッグ時にhtmlファイルを出力する
クローラーを作っていると、現在どんなページに対して処理しているのか、想定通りのページなのか、確認したいことが多々あると思います。
ビジュアル的に確認したい時、Capybaraとかだとsave_screenshotメソッドとかで簡単に確認出来ますが、Mechanizeなどのブラウザエンジンが組み込まれていない系ライブラリの場合、気軽に確認するのは難しいと思っていました。
だから毎回ページのソースをputsして頑張って確認していました。
しかしterminalに出力されるhtmlコードを何回も確認しているうちに発狂したので、簡単にファイルを生成する方法を調べた所、すごい簡単な方法を知りました。File.write先輩です。
クローラー開発に使用するライブラリがなんであれ、htmlソースを返すメソッドはあると思います。
NokogiriだったらNokogiri::HTML::Document#to_htmlで
MechanizeだったらMechanize::Page#bodyかMechanize::Page#contentで
AnemoneだったらAnemone::Page#bodyで
htmlソースを取得して、それをFile.write先輩の第二引数に渡します。第一引数は生成するファイル名です。
source = page.body File.write('check.html', source)
たったこれだけでhtml生成出来るんですね。Rubyは便利でした。
def check(source, file_name = 'check.html') File.write(file_name, source) end
このcheckメソッドを作った後の僕の人生が好転したのは言うまでもありません。彼女が出来そうになりました。
バイク買ったぶんぶん
初バイクを買いました。ヤフオクで。
バイクの知識が皆無なのに中古の個人取引ということと、実車確認せずに写真だけ見て買ったということから、不安でした。
説明欄に「カスタム多数!」と書いてあり、続いてイミフなカスタム内容が細かく書いてありました。
しゅ、しゅらうどはそれにしたんだおっけーわかってるおっけー
オークション終了間際だったからか「音はどんな感じっすか?(^^)」という素人丸出しの質問は無視されましたが、落札してしまいました。
落札直後は買った興奮よりお金がなくなる萎えの方が大きかったです。
何度かやり取りをして、直接我が家まで届けにくるぅということになりました。名前しか知らない相手がうちにくるぅ。
恐らく43歳ぐらいのおっさんだろうと思いました。名前的に。
そして今日がその日でした。
おっさんと会う1時間前に、おっさんに対して失礼がないように、髪を切りに行きました。
かわいい美容師さんに切ってもらうことになりました。
美容師さんと話しながら、おれ喋ってる時こんな顔なんだ思ってたのと違うなキモいなと凹んでいる時に携帯が鳴りました。
今日俺に電話かけてくるのは小林クリーニングかバイクおっさんバイクしかいないと分かっていたし、時間的に大分早いけどおっさんぽかったので、一旦スルーしました。ネイルトークで盛り上がってたし。
美容師さんと笑顔で別れた後、電話を折り返した所、案の定バイクおっさんバイクでした。
ヤフオクの取引ナビではすごい淡白だったのに電話ではえらいノリノリだなと思いました。大人あるある。
早く着いたということで、急いで待ち合わせ場所に向かいました。
待ち合わせ場所見た感じ誰もいなかったので、近くの車の影で切りたての髪変なんになってないかスマホで確認して待ってたら、その車におっさん乗ってました。
髪変なんになってないかスマホで確認してるとこ見られたよはずかしっ
バイクに乗ってくると思ってたけど車の荷台に積んでくるパターンでした。
おっさんは若干渋目のおっさんでした。普通の人で良かった。いい感じの人で良かった。
色々とバイクの説明をしてもらって、
おっさん「プラグはノロジーでこのホースはアールズ、エキパイはじゅんせーで、」
ぼく「なるほどなるほどなるほど!!」
無事取引終了しました。
Capybara + Selenium で使うブラウザをChromeに変更する方法
Seleniumのデフォルトの設定ではFireFoxが起動します。
嫌なのでChromeが起動するようにします。
まずchromedriverをインストール。
$ brew install chromedriver
Capybara.current_driverを指定する前に、ブラウザをchromeに設定します。
Capybara.register_driver :selenium do |app| Capybara::Selenium::Driver.new(app, :browser => :chrome) end Capybara.current_driver = :selenium
うれしい!音ズレTubeが使われてる!
音ズレTubeに設置してあるソーシャルボタンの数が増えてる!
2ツイート、4はてブ、1いいね!
こっれっはっ、うれしい。うれしいぞ〜。
このうち1ツイート、1はてブは僕ですけどね。なんで急に増えたんだろう。昨日かっこいいfavicon作ったから?
なんせこのfavicon作るのに13時間はかかりましたからね。それなりの反響は期待しておりました。ありがとうございます。
前の記事で書いた
今はどうやるか分からないけど、これから改良していきたい点を列挙してみます。
・youtubeのURLにotozureと加えれば、音ズレTubeでその動画を再生出来るようにする。
・youtubeのアドレスはhttpsだから、↑を実現するためにSSLサーバー証明書を取得する。
・httpsでのアクセスをhttpにリダイレクトする。
・youtubeotozure.comのアクセスをwww.youtubeotozure.comにリダイレクトする。
これらについてですが、wwwにリダイレクトするのは何とか出来たんですが、httpsって結構お金かかるんですね。httpsは一旦保留します。もっと人気出たら考えます。
それにしてもこのスピード感、使われてるって感じがする。
追記
アクセスが増えた理由がわかりました。
「WEBサービスまとめてみた」こちらのサイトで紹介して頂いたからです。
感無量です。ありがとうございます。
ふふっ(笑)こんなダサいfaviconでアクセスが増えるわけないですよねありがとうございます。