📌

レンタルサーバー上でpythonプログラムを定期実行するまでの記録

2024/08/23に公開

やりたいこと

webサイト上の情報を取得してメール/Slack/LINEあたりに通知するプログラムを3時間おきに自動で回したい。ていうかどんなプログラムでもいいからサーバー上にファイル置いて定期実行するっていうのをできるようになりたい

ほんとにこれ、PC閉じてても勝手に動作してくれる本当の意味での自動化をしてみたいのよ
https://gammasoft.jp/vps/

現状

ローカルで適当なプログラムを実行することはできてる、
以下なんでもいいからスクレイピングするプログラムを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 実行」とかでググって参考なりそうなサイト発見
https://qiita.com/kei_kei_kei/items/01869aef5ef18bf0154f

chatGPTに聞いたりもして
https://chatgpt.com/share/052ff311-47a2-49d8-9693-63c8155d3d93

なんかとりあえずサーバーに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系のままらしい?めんどくさそう

https://dangomushi115.sakura.ne.jp/blog/2023/08/11/sakura_rental_server_memo_pip/

なのでPython 2.7.18のままで進めてみよう

pipは使えない?けど個別のモジュールのimportはできそう?あれ?

Discussion