1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import urllib2
  5. import cookielib
  6. import os
  7. import time
  8.  
  9. #
  10. # ニコニコ動画でキーワード検索し、その検索画面を保存するプログラム by福ヲタ
  11. #
  12. # 参照元 "http://d.hate1na.ne.jp/yumimue/20080109/1199878021"
  13. # 参照元 "http://d.hatena.ne.jp/y_yanbe/20070827/1188160390"
  14. # 参照元 http://d.hatena.ne.jp/yumimue/20080101/1199148663
  15. # 参照元 http://python.blog-slime.com/2007/07/pythonhttpcookie.html
  16.  
  17. word = "swf+or+flash+or+フラッシュ" # 検索文字列
  18. urllogin = "https://secure.nicovideo.jp/secure/login_form" #ログイン先
  19. mail = "hogehoge@ahoo.jp" #メールアドレス (これは架空のものです)
  20. password = "himitu" #パスワード (実際のパスワードは秘密)
  21. next = "次へ</a></td></tr></table>"
  22. konzatu = "<h1>短時間での連続アクセスはご遠慮ください</h1>"
  23.  
  24.  
  25. cj = cookielib.CookieJar() #ネットへアクセスする為の準備。クッキーとか。
  26. cjhdr = urllib2.HTTPCookieProcessor(cj)
  27. opener = urllib2.build_opener(cjhdr)
  28. opener.addheaders = [('User-agent', 'Monthly_.swf_ranking_tag_retrieval_tool/v20101113(http://twitter.com/fukuwota)')]
  29. #User-agentの設定・・・戀塚さんがtwitterで設定してほしいと言っていたので。
  30.  
  31. r = opener.open("https://secure.nicovideo.jp/secure/login?site=niconico","mail=%s&password=%s" % ( mail, password )).read()
  32. print "Login now..."
  33.  
  34. time.sleep(10)
  35.  
  36. page = 1
  37. kensaku = 9
  38.  
  39. while kensaku > 0 :
  40.  
  41. page2 = str(page)
  42.  
  43. kenkon = 0
  44. waittime = 0
  45. flag = False
  46.  
  47. while flag == False :
  48. try:
  49. r = opener.open("http://www.nicovideo.jp/search/" + word + "?page=" + page2 + "&sort=f&order=a").read()
  50. except urllib2.HTTPError ,e:
  51.  
  52. #ここから、検索時に規制が掛かったときに待つ処理
  53. waittime = waittime + 60
  54. print( "Now wait " + str(waittime) + "sec." )
  55. time.sleep(waittime)
  56. else:
  57.  
  58. kenkon = r.find(konzatu)
  59. print kenkon
  60.  
  61. if kenkon < 0:
  62.  
  63. waittime = 0
  64. flag = True
  65. else:
  66. #ここから、検索時に規制が掛かったときに待つ処理
  67. waittime = waittime + 60
  68. print( "Now wait " + str(waittime) + "sec." )
  69. time.sleep(waittime)
  70.  
  71.  
  72. kensaku = r.find(next) #次ページが有るかの判定。無かったらkensaku=0になるので、whileループから外れる。
  73.  
  74. f = open("kensaku-tag-" + page2 + ".htm", 'w') #検索したページをhtm形式で保存
  75. f.write(r)
  76. f.close
  77.  
  78. print("loading html " + page2 + "page")
  79. page = page + 1 #ページ番号を1つ増やす。
  80. time.sleep(20)
  81.  
  82. ###なお、このプログラム、2011年6月中旬に行われたシステム改修により、使えなくなりました・・・orz
  83.  
最終更新:2011年06月15日 23:19