Help us understand the problem. What is going on with this article?

プログラムいらず!vimで手動スクレイピング

More than 3 years have passed since last update.

Webページからちょっとデータ抜き出したいときありますよね。
1回だけしか行わず、わざわざプログラム組むほどでもないならVimでやるのがおすすめです。

例:はてぶのページからリンクを取得する

vimを開いて4コマンドでリンクを抜き出します。
しかもエディタ上なのでその後の加工や連続スクレイピングなどもスムーズに行えます。

# 最初の行以外はどのサイトでも共通的に使えるはず
:e http://b.hatena.ne.jp/ctop/it
:%s/></>\r</g | filetype indent on | setf xml | normal gg=G
:%v/<a/d
:%s/^.*href="\([^"]*\)"[^>]*.*$/\1/

# 完全URLにしたいなら
:%s/^\//http:\/\/b.hatena.ne.jp\//

↓結果
vim2.gif

解説

データ取得

# フォーマット
:e <url>

# 例:はてぶのページ取得
:e http://b.hatena.ne.jp/ctop/it

HTML整形

:%s/></>\r</g | filetype indent on | setf xml | normal gg=G

フィルタリング

# フォーマット:指定したパターンにマッチしない行を削除
:%v/<パターン>/d

# 例:aタグを含まない行を削除
:%v/<a/d

データの整形

# フォーマット
:%s/<置換前パターン>/<置換後パターン>/gc

# 例:hrefの中身だけを抽出(それ以外の部分は削除)
:%s/^.*href="\([^"]*\)"[^>]*.*$/\1/gc

# 例2:相対URLを絶対URLに置換
:%s/^\//http:\/\/b.hatena.ne.jp\//

おまけ

取得したURLを元にして再度スクレイピングしたいなら以下を実行

# ヤンク
yy
# ヤンクしたURLをペーストして新しいタブで開く
:tab new <url>

# あとは上の項目を繰り返し実施するだけ
muran001
2014年6月から大手SIerに見切りをつけてWeb系のエンジニアとして活動してます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away