はてな fotolifeダウンローダ

mzp2007-07-09

30分プログラム、その78。fotolifeの画像をまとめて取得するプログラム。
しなもんの画像をまとめてダウンロードしたかったので。

$ python foto.py hatenacinnamon
http://f.hatena.ne.jp/images/fotolife/h/hatenacinnamon/20070621/20070621011739.jpg
http://f.hatena.ne.jp/images/fotolife/h/hatenacinnamon/20070621/20070621011737.jpg
http://f.hatena.ne.jp/images/fotolife/h/hatenacinnamon/20070621/20070621011721.jpg
http://f.hatena.ne.jp/images/fotolife/h/hatenacinnamon/20070618/20070618175512.jpg
.....

実際に使うときは、wgetと併用する。

$ python foto.py hatenacinnamon > list
$ wget --input-file=list
import xml.sax as xml
import urllib2
import sys
class Handler(xml.ContentHandler):
    def __init__(self):
	xml.ContentHandler.__init__(self)
	self.image = False
	
    def startElement(self,name,attr):
	if name == 'hatena:imageurl':
	    self.image = True
	    
    def endElement(self,name):
	if name == 'hatena:imageurl':
	    self.image = False

    def characters(self,content):
	if self.image == True:
	    print content

if __name__ == '__main__':
  io = urllib2.urlopen("http://f.hatena.ne.jp/%s/atomfeed" % sys.argv[1])
  xml.parse(io,Handler())
  • urllib.urlopenだと403になる。なぜ?
  • プロセス置換をしようとすると失敗する。なぜ?
  • Pythonで親クラスを指定するキーワードはないのかな。多重継承を許しているし、たぶん無いな