2013年04月10日

動画ページURL収集のRubyスクリプト

割とどうでもいいことも記事に起こすって目標があった記憶があるから 割とどうでもいい記事書きます。

最近仕事でPHPしているので プライベートでちょろっとだけRuby書いて遊んでます。

今日はその中のひとつであるURL収集用スクリプト。

ぶっちゃけ、あるサイトをスクレイビングしているだけなので超簡単。

#!/usr/bin/env ruby

# スクレイビング用にMechanizeさんにお世話になる
require 'mechanize'

agent = Mechanize.new

url = 'http://***********/' # 趣味がバレるのでURLは伏せる:p

# get_urls.rb 20140404
# と実行したら
# http://***********/20140404.html を取得するように
url += ARGV[0] + ".html" if ARGV[0]

# ページ取得
agent.get(url)

# 各テーブル内に必要な情報があるのでとりあえずテーブル拾う
tables = agent.page.search("div.txtBody > table")

# 各テーブルを解析
tables.each do |table|
  tds = table.search("td")

  # 各セルを解析
  tds.each do |td|
    links = td.search("a")

    # このページから動画へのリンクは数字のみ含まれているのでそういうリンクを取得
    movie_links = links.select {|link| link.text =~ /^\d+$/ }

    # そのセルに目的のリンクがなければ次へ
    next if movie_links.empty?

    # 画像のalt属性に動画タイトルがあるのでそれを出力しておく
    img = td.at("img")
    puts img["alt"]

    # 動画のリンクをそれぞれ出力
    movie_links.each {|ml| puts ml["href"] }
  end
end

実行したら、こんな感じのテキストファイルができる。 (実際に取得したデータではありません)

オッス! 漢だらけのふんどし大会!
http://movie.example.com/video_id=92871
http://movie.example.com/video_id=92878
美人すぎる男たちの宴
http://vids.example.com/video832171
http://vids.example.com/video832198
http://vids.example.com/video832211

あとはタイトルを見て適当に必要そうな動画のURLだけ残して ほげほげしている感じ。

コードのコメントなどを真面目に読んだ方なら気付いていると思いますが 対象のサイトは毎日ページを更新しているので このスクリプトを適当に ~/bin/get_urls.rb という位置に保存して crontab で

PATH="/home/mugijiru/bin:/home/mugijiru/.rbenv/shims:/bin:/usr/bin:/usr/local/bin"

5 2 * * * get_urls.rb > $HOME/video_urls/`date +'\%Y\%m\%d'`.urls

とか書いて毎日取得している感じ。 cronの環境変数周りとかdateの書き方とか よくわからんしなんか面倒だよねってこれを書いてて思った。

ま、いい加減だけど巡回の手間が省けてるので良し。幸せになれてる。

posted by 麦汁 at 22:32 | Comment(0) | TrackBack(0) | ruby | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/354827526
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック