278
269

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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>

# あとは上の項目を繰り返し実施するだけ
278
269
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
278
269

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?