皆さん、こんにちは。中川です。かなり久しぶりの投稿です。普段は会社でJavaを使った業務用のWebアプリケーションを作っていますが、一般生活ではPythonでスクレイピングをしていることが多いです。特にブログの自動更新やsnsなどの自動フォローなどにはまっています。そこで今回、Pythonとseleniumを使って簡単なブログ更新を行ってみました。
環境
Python 3.7.0 selenium 78コード
```python:qiita.py from selenium import webdriver from time import sleep from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions from selenium.webdriver.common.by import By from selenium.common.exceptions import TimeoutExceptionclass LivedoorAuto:
def init(self):
options = webdriver.ChromeOptions()
#chrome://version プロフィールパスを参照
options.add_argument("")
#executable_pathには、chromedriverのパスを記入
self.bot = webdriver.Chrome(executable_path="", chrome_options=options)
def livedoor(self):
bot = self.bot
#ブログ投稿ページのurl
bot.get("")
wait = WebDriverWait(bot,60)
entry_title = wait.until(expected_conditions.visibility_of_element_located((By.ID,"entry_title")))
entry_title.send_keys("Hello")
while True:
try:
entry_body = wait.until(expected_conditions.visibility_of_element_located((By.ID,"editor_1_f")))
entry_body.send_keys("Hello Everyone")
break
except TimeoutException:
print("timeout")
continue
sleep(2)
bot.find_element_by_class_name("quickSocialMessage").send_keys("Hello")
ed = LivedoorAuto()
ed.livedoor()
タイトルをhello、記事内容にHello Everyoneという文字を記入するようなコードです。
最初にurlにアクセスする際に、ログインページに飛ばされますが、何度もログインを繰り返すとスパム扱いされることがあるため、最初からログイン情報をセッションに保持するようにしています。
seleniumで、ログイン情報を保持する方法は、以下のページに詳しく説明されています。
<a href="https://rabbitfoot.xyz/selenium-chrome-profile/">Seleniumで次の実行時にもサイトのログイン状態を維持したい場合</a>
あまり難しくはないのですが、案外ネットでこのような情報が少なかったので、書いてみました。何かの参考になると幸いです。