in my 雑記

プログラミング bump 日々のことなど

自動 はてなブックマーク bot を作った [python selenium ]

f:id:inmyzakki:20170624011458j:plain:w500

自動ではてなブックマークをしてくれるbotを作りました。
気になるワードを指定しておくと、はてなブログの新着で、指定した言葉を含む記事を 自動でブックマークしてくれます。
気になる言葉の情報収集や、
同じような趣味をしているブログを調べるのにご活用ください。
一応使い方も書いておきますが、自分が動けばいいや程度に作っています。
もし、環境を整えずに使いたい方がいたら、この記事をブックマークしてください。
ブックマークする方が多かったら、誰でも簡単に使えるように(exe化してスタンドアロンで動くようにしようかなぁ)して公開します。

機能

・指定したユーザーでログインできる。
・自動でブックマークできる。
・自動で無料スターをつけれられる。
・記事にブックマークボタン、スターボタンがない場合はできない。
はてなブログに投稿されている、すべての新着記事を対象とする。
・ブックマーク、スターの条件として本文に含むワードをand,orで複数指定できる。
・ブックマーク、スターの条件として、本文の文字数を指定できる。
はてなブックマークのタグを指定して登録できる。

使い方

pythonをインストールしていない方はこちらの記事を参考にしてpyhtonをインストールしてください。
inmyzakki.hatenablog.com

次にpythonに必要なライブラリをインストールします。
コマンドプロンプトを起動して、以下のコマンドでインストールしてください。

selenium
pythonでwebブラウザを動かすライブラリ。
・beautifulsoup
取得したhtmlを読みやすい形に成形してくれるライブラリ。

pip install selenium
pip install beautifulsoup4

次にpythonで使用するwebブラウザをダウンロードします。
https://chromedriver.storage.googleapis.com/index.html?path=2.30/
ここからOSにあったブラウザをダウンロードします。
windowsの方は「chromedriver_win32.zip」です。

次にプログラムをダウンロードします。
ここからダウンロードしてください。
DownloadZipからダウンロードできます。
github.com f:id:inmyzakki:20170617171046p:plain

次に設定を行います。
「starbot.py」を開いて以下の部分を書き換えます。

########################################
# 設定値                                #
########################################
# 文字数制限
# この文字数以下はブックマークしない
num = 1000
# ブックマークキーワード
# この文字を含む記事のみブックマークする('|'区切りでいくつも設定可能)
key = re.compile(r"ソロギター|PONSTUKA|ポンツカ|読ん|読む|漫画|本|webサービス|モバイル|モンスターハンター|モンハン|PYTHON|Python|python|電気|電子|パーツ|ノートパソコン|PC|スマホ|タブレット|映画|レビュー|感想|BUMP|bump|Bump|バンプ")
# タグ設定
# タグ名:[タグワード]で設定する。
# タグワードを複数指定することができる。
# ++は必須条件。-0はor条件
# 下の例だと記事に「映画」と「レビュー」か「感想」という言葉が入ってる記事を「映画(レビュー)」というタグでブックマーク。
# -0,-1と設定することで XXX AND XXX OR XXX OR XXX AND XXX OR XXX みたいな条件でブックマークできる。
tagset = {"ソロギター":["-0ソロギター"],"ポンツカ":["-0PONSTUKA","-0ポンツカ"],"本(漫画含む)":["-0レビュー","-0感想","-1本","-1漫画","-2読む","-2読ん"],"webサービス":["++webサービス"],"モンハン":["-0モンスターハンター","-0モンハン"],"python":["-0PYTHON","-0Python","-0python"],"レビュー(ガッジェット)":["++レビュー","-0モバイル","-0パーツ","-0PC","-0スマホ","-0タブレット","-0電子","-0電気"],"映画":["++映画","-0レビュー","-0感想"],"バンプ":["-0BUMP","-0bump","-0Bump","-0バンプ"]}
# はてなユーザー名
user = 'XXX'
# はてなパスワード
passWord = 'XXX'
# スターフラグ
# ブックマークはしたいけど、スターはつけたくない場合とかに使う
# スターをつけたい場合は True
# スターをつけない場合は False
starFlg = True
# ブックマークフラグ
# スターはつけたいけど、ブックマークはしたくない場合とかに使う
# ブックマークしたい場合は True
# ブックマークしたくない場合は False
bookmarkFlg = True
# ダウンロードしたブラウザのパス(上記の手順でダウンロードしたchromedriver.exeのパスを記入ください)
chromedriver = "XXX"

※chromedriver.exeはプログラムが起動すると実際のgoogleChromeが起動してブックマークしていきます。ブラウザを起動せずにブックマークしたい方はchromedriverではなくphantomJsを使うといいです。

コマンドプロンプトで以下のコマンドで実行して起動します。

cd starbot.pyの配置されているフォルダのパス
python starbot.py

すると以下のようなログが表示され、googleChromeが立ち上がります。

---------------------------
大樹寺店発 吉良サンライズパーク調査  - 天狗堂スタッフによる釣りブログ
http://tengudo.hatenablog.com/entry/2017/06/17/151921
472
ブックマークしない
---------------------------
---------------------------
破風山 - 秩父・長瀞の新着情報
http://chichibu.hatenablog.com/entry/2017/06/17/151924
146
ブックマークしない
---------------------------
---------------------------
養殖の洋食 - 粗大ゴミの醍醐味
http://sodaigominodaigomi.hatenablog.com/entry/2017/06/17/151925
939
[映画]
ブックマーク完了
---------------------------
---------------------------
希望と絶望も見方次第!? - 慎(SIN。
http://ipreferlucifer.hatenablog.com/entry/2017/06/17/151925
293
ブックマークしない
---------------------------
---------------------------

あとは待っているだけで、勝手に指定した条件でブックマークしてくれます。

少し時間が経ったら、自分のはてなブックマークにアクセスして、
ブックマークをクリックすると、ちゃんと指定したワードでタグづけされてブックマークされていることがわかります。
f:id:inmyzakki:20170617161448p:plain

終わり

chromedriverがヘッダーレス化したみたいなんで、
その興味に引きずられて、今回こういったものを作った。
しかし、windowsではまだ対応していないみたい。なので渋々chromedriverを使った。
実際に動かしてみるとはてなブックマークを自分の興味ある記事のRSS的な使い方ができるんで、
個人的には結構使えるなぁと思った。
ただ、機能を継ぎ足して言ったら設定が煩雑になってしまった。
最初にちゃんと設計出来ていればこんなことにならないんだよなぁ。
あと、望んでない記事も持ってきてしまうことがあるから、記事のタイトルとブックマークしないワードを設定できるようにしよう。