追記
みどりの小野 (id:yutoma233)さんで実験したらノードのパスが違ってたので直した。
ありがとwwwww小野さんwwwwwww
あとたまに付けるのミスるのでsleep(1)のほうが良いのかもしれない。
一つのブクマにスター連打より複数ブクマにスターつけられる方がダメージでかいことがわかった(わかるなw
— elve (@elve_hatena) 2021年7月10日
動機
anond.hatelabo.jp
ダメじゃない。
やろう!
結論
これはダメかもwwwwww
目的
好きなブクマカのページのスターを押しまくる
コード
https://b.hatena.ne.jp/はてなID/YYYYMMDDを指定した場合、最初の画面の指定日付のブクマにのみスターつけます。
import unittest, time from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.action_chains import ActionChains #はてなにログイン driver = webdriver.Chrome("C:\Program Files (x86)\chromedriver_win32\chromedriver.exe")#各環境で変更する driver.get("https://www.hatena.ne.jp/login") elem_serach_lgname = driver.find_element_by_id("login-name") elem_serach_lgname.send_keys("はてなID") elem_serach_pss = driver.find_element_by_class_name("password") elem_serach_pss.send_keys("パスワード") elem_serach_btn = driver.find_element_by_class_name("submit-button") elem_serach_btn.click() #待ち過ぎかもしれない time.sleep(3) # 星何個 bkm =5 #ブクマカのページへ driver.get("https://b.hatena.ne.jp/elve/20190707") #elements_a = driver.find_elements_by_xpath('/html/body/div[3]/div/div[2]/div[3]/ul/li[@class="bookmark-item js-user-bookmark-item"]')#自分ブクマページに付ける時 elements_a = driver.find_elements_by_xpath('/html/body/div[3]/div/div[2]/div[2]/ul/li[@class="bookmark-item js-user-bookmark-item"]')#人のブクマページに付ける時 for elem2 in elements_a: try: btn = elem2.find_element_by_class_name("hatena-star-btn") btn.click() for num in range(bkm): actions = ActionChains(driver) actions.move_to_element_with_offset(btn,3,3) actions.click() actions.perform() time.sleep(0.5)#0.5→1のほうが良いかも print(num) driver.execute_script("arguments[0].scrollIntoView();", elem2) except: cud = btn.text print(cud) continue
失敗
import unittest, time from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.action_chains import ActionChains #はてなにログイン driver = webdriver.Chrome("C:\Program Files (x86)\chromedriver_win32\chromedriver.exe") driver.get("https://www.hatena.ne.jp/login") elem_serach_lgname = driver.find_element_by_id("login-name") elem_serach_lgname.send_keys("はてなID") elem_serach_pss = driver.find_element_by_class_name("password") elem_serach_pss.send_keys("パスワード") elem_serach_btn = driver.find_element_by_class_name("submit-button") elem_serach_btn.click() time.sleep(3) # 星何個 bkm =3 #ブクマカのページへ driver.get("https://b.hatena.ne.jp/elve/20190710") elements_a = driver.find_elements_by_xpath('/html/body/div[3]/div/div[2]/div[3]/ul/li[@class="bookmark-item js-user-bookmark-item"]') for elem2 in elements_a: try: actions = ActionChains(driver) btn = elem2.find_element_by_class_name("hatena-star-btn") btn.click() actions.move_to_element_with_offset(btn,3,3) for num in range(bkm): actions.click() actions.perform() time.sleep(0.5) print(num) except: cud = btn.text print(cud) continue
これだとbkm=3で6スター。4で10スターついてしまった(;´∀`)
参考
はてなブログの裏技:読者の自動スター機能|tamurasann|note
Python + Selenium で Chrome の自動操作を一通り - Qiita
Selenium リンクを順にクリックして個別ページの要素を取得する - Qiita
location-Python
Python - javascriptのボタンをselenium(python)を使用してクリックしたい|teratail
python - Selenium - Click at certain position - Stack Overflow
Actionクラスについて
python for文を初心者向けに解説!for文基礎はこれで…|Udemy メディア
Seleniumでchromeブラウザをスクロールする - Qiita
注意
ハテナ様から、私のブログのスター欄につきまして、注意して☆を使わなければ、今後は予告なくスター欄を停止するとの連絡
(臨時に)何時も感謝です。ponyoponyokunのブログのスター欄の事につきましてハテナ様から連絡を頂いた報告&IDコールが今も可能らしいのは?ですが、ハテナ様がハテナブログのIDコールを終了していたと御理解を感謝です - ponyoponyokunの日記
が来ることもあるから要注意!!