読者です 読者をやめる 読者になる 読者になる

Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

[python]Python で 画像スクレイピング

突然ですが、いままでちょっとしたメモ書きを hiki や、このブログに書いていたわけですが、Emacs Wikiを使うようになって、これが便利すぎて、メモ書きは全部 Emacs-Wikiに書くようになってしまいました。

そんなわけで、ただでさえあまり更新されないこの日記の更新頻度がさらに少なくなってしまいそうです。や、まあ Wiki に書いてることをを公開すればいいんですけど。。。まぁいいや。そこで、日記書くネタのために、Python の Mechanize で遊んでみました。

まず、インストール。

sudo portinstall -P www/py-mechanize

ports にあったので、easy_install は使いませんでした。うーん、FreeBSDは楽でいい。

さて、、、Mechanize を使って何を書こうかと悩んでいたところ、そういえば、昔、しょこたんブログの画像を一気にダウンロードするスクリプトがあったなあ、、、と思い出し、ちょっと検索してみたけど見つからず。ちょうどいいので、画像スクレイピングスクリプトを書いてみることにした。

# -*- coding:euc-jp -*-

import mechanize
import urllib2
import time
import datetime

def download_image(url):
    filename = url.split("/")[-1]
    dat = urllib2.urlopen(url)
    open(filename,"wb").write(dat.read())
    print "[%s] %s was downloaded." % (datetime.datetime.now().strftime("%H:%M:%S"), filename)
    time.sleep(1)

br = mechanize.Browser()
br.open('http://blog.livedoor.jp/akanehotaru/archives/cat_736051.html')
next_page = unicode('次のページへ', 'euc-jp').encode(br.encoding())

while True:
    for link in br.links(url_regex="image"):
        download_image(link.url)

    try:
        br.follow_link(text_regex=next_page)
    except:
        break

わたくしが愛読してるブログにある写真を、まとめてダウンロードしてくれるスクリプトです。あ、しょこたんとか言っといて、しょこたんじゃありません。あしからず。。。