レンタルサーバー上でpythonプログラムを定期実行するまでの記録
やりたいこと
webサイト上の情報を取得してメール/Slack/LINEあたりに通知するプログラムを3時間おきに自動で回したい。ていうかどんなプログラムでもいいからサーバー上にファイル置いて定期実行するっていうのをできるようになりたい
ほんとにこれ、PC閉じてても勝手に動作してくれる本当の意味での自動化をしてみたいのよ
現状
ローカルで適当なプログラムを実行することはできてる、
以下なんでもいいからスクレイピングするプログラムをchatGPTに書いてもらった。ヤフーファイナンスからランキングとってくるやつ
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# ChromeDriverの設定
service = Service(executable_path='chromedriver.exe')
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# ヤフーファイナンス株式ランキングページにアクセス
url = "https://finance.yahoo.co.jp/stocks/ranking/up"
driver.get(url)
# データ取得開始箇所
table_xpath = "/html/body/div[1]/div[2]/main/div/div[3]/div[1]/section/div/div[3]"
table_element = driver.find_element(By.XPATH, table_xpath)
# テーブル内の行を取得
rows = table_element.find_elements(By.TAG_NAME, "tr")
# データを格納するリスト
content = []
# 各行のデータを処理
for row in rows:
cells = row.find_elements(By.TAG_NAME, "td")
row_data = [cell.text for cell in cells]
if row_data: # 空でない行のみ追加
content.append(row_data)
# ブラウザを閉じる
driver.close()
# 表形式でデータを表示
for row in content:
# 動的にフォーマット文字列を作成
format_string = " ".join(["{:<20}" for _ in range(len(row))])
print(format_string.format(*row))
ここからどうするかわからん
やったこと
「サーバー上 python 実行」とかでググって参考なりそうなサイト発見
chatGPTに聞いたりもして
なんかとりあえずサーバーにSSH(Secure shell)でログイン?するらしい
コマンドラインからアクセスするっぽい。ほう
コマンドからサーバーにアクセスするとかやったことないしそういう概念もよくわかってないけどなんかそれっぽい感はあるな
昔ドットインストールで仮想環境作ろう的なvenvがどうのこうのを思い出す
最近はVScodeでターミナル使ってたんだけどそっからでもいけそうなので
よくわからんけど
ssh xxxxx@xxxxx.xxx
試したら自分の借りてるレンタルサーバー(さくらサーバー)にログインはできたっぽい
サーバー上に.pyのファイル置いてサーバーの機能のcronてきなので自動で回す感じか?
なんとなく理解
で上記のファイル置いて実行してみると以下エラー
ImportError: No module named selenium
インストールされてるモジュール見ようと思ってpip listしたら
pip: Command not found.
そもそもpythonのバージョン確認すると2系が入っていて3系じゃない
Python 2.7.18
2022年2月15日以前からさくらのレンタルサーバー使ってる場合は新サーバーに移行するorバージョンアップしないとpython2系のままらしい?めんどくさそう
なのでPython 2.7.18のままで進めてみよう
pipは使えない?けど個別のモジュールのimportはできそう?あれ?
Discussion