スナックelve 本店

バツイチ派遣40代女性の日記です

最初の一歩

タグ付のテストもかねて。←失敗した
もしかして記事内に #Python3 とか書いたらつく?←つかない
Enterが足りなかった・・・。これプログラムでできるかな?

やりたいこと

過去記事の編集画面を開いて、タグが入ってたらスルー、入ってなかったらカテゴリーと同じ文字を入れる。
もうちょっと詳しく書くとログインしているものとして

https://blog.hatena.ne.jp/elve/elve.hatenadiary.jp/entries
を開く

  • ページ分ループ
    • そのページ内の記事数分ループ
      • カテゴリを取得
      • 記事の編集画面を開く
      • タグをつけるボタンがあれば押す(なければ戻る)
      • 取得したカテゴリを入力してエンター押下相当の処理
    • 次のページへを押す

だな。
apiとかは未対応っぽいから、Pythonでブラウザを触れれば何とかなるかな?
フォームに入力してボタン押す必要がありそう・・・。
google:python web フォーム 自動入力

ふむふむ。
参考:pythonで自動入力、スクレイピングをしてみる - Qiita
環境:python3.8.6+visual studio code 1.50


ターミナルに下記を入力してOK

pip install selenium

これがどこに入れてもエラーになるんでよくわからん。
brewなんてコマンドないぜって言われるのでなんか根本から違うのかも。

brew tap homebrew/cask
brew install chromedriver

Downloads - ChromeDriver - WebDriver for Chrome
ここから落としてきて解凍したファイルはソースファイルと同じドキュメントに置く。

f:id:elve:20201009184931p:plain
これで動いた。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located

#This example requires Selenium WebDriver 3.13 or newer
with webdriver.Chrome() as driver:
    wait = WebDriverWait(driver, 10)
    driver.get("https://google.com/ncr")
    driver.find_element(By.NAME, "q").send_keys("cheese" + Keys.RETURN)
    first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR, "h3>div")))
    print(first_result.get_attribute("textContent"))