tech

seleniumでサイトの状況を定期的に監視してみた

ブラウザ経由でのサイト監視に興味がある方向け。

ブラウザ経由でのサイト監視

管理人の最近の主な言語はpythonなので、pythonを使ったサイト監視ができないか調べてました。結果、seleniumライブラリを使うとよい感じで監視ができました。同じようなことを考えられている方は参考にしてみてください。

以下のサンプルプログラムを記載します。

本プログラムはgoogle chromeを利用します。seleniumライブラリを利用するとpythonからchromeを操作できるようになります。

今回は、3時間プラスランダム時間ごとにサイトの状態を見に行って、終わったらブラウザを閉じるプログラムになります。エラーが出るとコンソールにその旨が表示されるので何かあったかはそれで確認するという手抜き仕様です。

なお、ついでにタブを開いてそれを操作するということもできたので、備忘録として記載します。

driver.execute_script("window.open()")
new_window = driver.window_handles[x]
driver.switch_to.window(new_window)

の部分になります。xは操作したいタブ番号になります。driver.switchで指定のタブに捜査対象を切り替えます。

サンプルプログラム

import random
import time
from selenium import webdriver #seleniumをインポート
from selenium.webdriver.chrome import service as fs

def time_maker(cou):
sleeper = []
base_time = 180 * 60
for i in range(cou):
random_time = random.randint(10,1200)
random_time = base_time + random_time
sleeper.append(random_time)

return sleeper

if __name__ == '__main__':
counter = 3
interval = time_maker(counter)
breaker = 0

for i in interval:

chrome_service = fs.Service(executable_path='./chromedriver')
driver = webdriver.Chrome(service=chrome_service) # chromeドライバーを指定
driver.implicitly_wait(10) # 待機時間10秒

driver.get('https://megane-risu.com/')
driver.execute_script("window.open()")
new_window = driver.window_handles[1]
driver.switch_to.window(new_window)
time.sleep(7)
driver.get('https://hoge.com')

time.sleep(3)
driver.close()
driver.switch_to.window(driver.window_handles[0])
driver.close()

breaker = breaker +1
if breaker == counter:
print("complete!")
break

time.sleep(i)

あとがき

インデントが消えてしまった。掲載法を後で見直したいと思います。

 

-tech
-, ,