Webクローラーを自前で実装する戦略を情弱が考えてたところなんか話がそれて頭の良さの変遷ついて考察する事になった


私は仕事ではもっぱらCのコードを書いてて、
デバドラとか簡単なライブラリを実装している程度の技術力の人です。

仕事とは全く関係なく、ウェブ関連に少し興味持ち始めてきたので、
最近ソケットプログラミング覚えて、ちょっとVirtualboxつかってUbuntu使い始めました。
コマンドラインの素晴らしさを少しづつ学びsshでリモートログインしてとかしていくうちに、
慣れ親しんだWindowsの居心地が悪くなってきました。
githubにもsshでpush(?)してみたり、凄くおもろい。

しかもLinuxは暇つぶしにもいい。
ネットワークスタックのソース見て、
ドライバの実装ってこうやるんだーって勉強になったりもするし。

話は変わって、
少し前、pythonのurllib使ってhtmlファイル落としてきてbeautifulsoupでパースする程度の実装たことがあります。
クローラー的なものを実装してデータマイニングしてみよっかなっていう軽いノリでした。
しっかしクソ面倒。
htmlしっかり書いてるサイトだったらいいんだけど、
お粗末なサイトを徘徊するのはエラーハンドリング周りがしっかりした実装でないと、
所望の処理は行えないわけで。。。
ここでくっそ頑張れば最強pythonクローラーができるかもなんだけど、
それは車輪の再発明で世の中になんの新しい価値も生み出さない。
そもそもpython使ってたのは会社で自動化ツール実装するのに必要で、
遊びながら仕事にも応用できればなーってノリなだけだったし。。


1つの言語で全部済ませたいという目標は、
効率が良いように見えて実は遠回り。
道具は適材適所で使わないとアホみたいに時間がかかることに気付く。

Ubuntuのコマンドラインでほげほげコマンド触ってたら
wgetとかcurlとかあるじゃないって気付きました(今更)。
wgetでドメイン指定して再帰的にぶっこ抜くっていうのも簡単にコマンド一つでできると知って、
やっぱり無知は罪だなー時間を浪費するなーって気付きました。

$ wget -r http://*****.co.jp

ってやれば同一ドメイン上のすべてのファイルを取得可能ですよね。
とりあえず全部ぶっこ抜くのは楽勝。
ぶっこ抜いたデータベースに対してどういった処理を加えるかは、
文字列処理に強い言語を使えば良さそう!


道具を組み合わせて新しい価値を出すことが求められてるので、
どうしたら早く目標を達成できるか、
最短の手法を考えられるようにすることが必要なんですよねきっと。
これからの「頭の良さ」の定義は、
いろんなこと知ってるとかよりも、
最適な組み合わせを理に適った方法で実現可能な形で提案できることに変遷していくと個人的に思う。


あぁ、何か雑多な話になってしまった。反省。

コメント

このブログの人気の投稿

Callback関数を知らん人がまず理解すべきことのまとめ。

C言語でBluetoothスタックを叩きたい人のBluetooth開発入門その1

C++プログラミング入門(1) // 倉庫番プログラムの実装