Python3.xとSeleniumでlivedoorブログに自動投稿するよ
昨日の記事ではfc2ブログにSeleniumを使って投稿しました。今回は対象を変えlivedoorブログに投稿したいと思います。今日の記事でもSeleniumはすでに環境構築ができているものとして書いていくので、まだの方は以前の記事なんかを参考に整えておいてください。
OS : Ubuntu 16.04 LTS
OS : CentOS 7
Python : 3.5.2
Selenium : 2.53.6
Contents
1. config.pyファイルの作成
さて、今回もまずはコンフィグファイルを作成します。ほぼほぼ前回の記事と同じです。このファイルを次に書くプログラムのファイルと同じディレクトリに入れておいてください。
1 2 3 4 5 6 7 8 |
#coding:utf-8 # livedoor USER_ID = 'ブログのID' PASSWORD = 'パスワード' # 記事の投稿ページURL EDIT_PAGE_URL = 'http://livedoor.blogcms.jp/blog/[ブログのID]/article/edit' |
今回は記事の投稿ページもブログによって変化するため、こちらも書き換えてください。
2. 今回のコード
今回のメインとなるコードを載せます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
#coding : utf-8 import os import time import MySQLdb from datetime import datetime from selenium import webdriver import config def login_livedoor(): try: i = b.find_element_by_id('livedoor_id') i.send_keys(config.USER_ID) i = b.find_element_by_id('password') i.send_keys(config.PASSWORD) i.submit() except: def edit_post(title='', txt1='', txt2='', tags=[]): try: # タイトルの入力 i = b.find_element_by_id('entry_title') i.send_keys(title) # "記事を書く"の入力 b.execute_script('document.getElementById("editor_1_f").contentWindow.document.write("<html><body>'+ txt1 +'</body></html>");') # "続きを書く"の入力 i = b.find_element_by_id('editor_tab_2') b.execute_script('document.getElementById("editor_1_f").contentWindow.document.write("<html><body>'+ txt2 +'</body></html>");') # タグの入力 i = b.find_element_by_id('entry_tag') tag_text = "" for n, tag in enumerate(tags): # livedoorブログの仕様上タグは10件までなので対策 if 10 < n: break tag_text += tag + ',' i.send_keys(tag_text[:-1]) # 投稿ボタンを押す i = b.find_element_by_id('submit_button').click() except: if __name__ == '__main__': try: # ブラウザの起動 # b = webdriver.Chrome('./chromedriver') b = webdriver.PhantomJS('phantomjs') except: quit() try: # ページ推移 b.get(config.EDIT_PAGE_URL) time.sleep(1) # ログイン状況の確認 if 'login' in b.current_url: login_livedoor() time.sleep(1) # 記事編集ページか確認 if 'edit' not in b.current_url: b.get(config.EDIT_PAGE_URL) time.sleep(1) # 投稿する本IDの決定 book_id = 1 # 記事情報の取得 b_titles = "TITLE" tags = ["tag1", "tag2", "tag3"] # 本文の作成 txt1 = "本文 ・:*+.\(( °ω° ))/.:+" # 追記の作成 txt2 = '追記 \(^o^)/' # 記事投稿 edit_post(title, txt1, txt2, tags) finally: b.quit() |
というわけで、今回もedit_postに必要な情報を引数で渡せば記事が投稿できます。
コーディングで分からないことがあれば
プログラミングや環境構築で分からないことがあったら『teratail』というエンジニア特化型のQ&Aサービスがオススメです。自分もどうしても分からないことがあったら、時々質問しにいきますが、かなりニッチな質問にも意外と早く回答がつくのでとても頼もしいです。という宣伝でした。
おわりに
さて、書きました。正直やっていることは単純です。ですが、このような単純なサンプルがネット上には少ない感じがするので、あえて記事を書きました。何かのやくに立てれば幸いです。