1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

就活つらい。せめてマイページにログインするのを自動化したい。

Last updated at Posted at 2024-09-03

概要

就活つらい。

就活を始めると企業のサイトに登録しなきゃですが、複数の企業に登録してたら全部を確認するのが結構大変。というか面倒くさい。
なるべく楽に生きたいので、Seleniumで企業のマイページにログインしていきます。
就活、マジでやばいです。夏のインターンどこも行ってない。何とかなれ。

志望企業といえど、マイページに行くの面倒ですよね

私はめっちゃ面倒です。
というか研究と両立できない。勘弁してください。

Seleniumで全部できるやん

Excelに必要な情報入れれば、あとはSeleniumで全部操作できるじゃんと思いました。
以下がそのExcelです。(見本)
ekuseru.jpg
マイページにログインするサイトのURLと、自分のID、パスワード、IDとパスワードを入力するテキストボックスのXpathと、ログインボタンのXpathをExcelに貯めます。

Xpathを調べるのがちょっと面倒臭いですが、一度だけなので頑張って取ってくる。
for文で回そうとしたので、xpathがいいかなって思いました。

あと確実に、パスワードを貯めるとか何となくセキュリティ的によくないと思うので、そのへん許せる人だけやってね。

#環境

エディタ:Visual Studio Code
Python 3.12.2
selenium 4.24.0
pandas 2.2.2(Excelからデータを持ってくるため)

Seleniumのwebdriverはこれを見てやりました。(多分……)
https://qiita.com/sagami1991/items/fdcc454e4ffe70a07507

#コード

詳しくは知らないのですが、ウェブ操作自動化系は相手のサーバ側に負荷がかかってしまう可能性があるので、使い方には気を付けましょう。
そこは自己責任ということで…

login.py
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import os
import signal
import pandas as pd

# Excelファイルは同じ階層に置いてるので
df = pd.read_excel('job.xlsx', sheet_name='id')

url = df.iloc[:,1].tolist()
id = df.iloc[:,2].tolist()
pwd = df.iloc[:,3].tolist()
id_box = df.iloc[:,4].tolist()
pwd_box = df.iloc[:,5].tolist()
loginbtn = df.iloc[:,6].tolist()

browser = webdriver.Chrome()

def login(num):
    browser.get(url[num])
    browser.implicitly_wait(5)
    id_target = browser.find_element(By.XPATH, id_box[num])
    id_target.send_keys(id[num])
    time.sleep(0.2) # 負荷はかけたくないよという気持ちの表れ。どのくらい待てばいいか正直分かってない。ごめんなさい。
    pwd_target = browser.find_element(By.XPATH, pwd_box[num])
    pwd_target.send_keys(pwd[num])
    time.sleep(0.2)
    btn = browser.find_element(By.XPATH, loginbtn[num])
    btn.click()

try:
    for i in range(len(url)):
        login(i)
        if i<(len(url)-1):
            #新規タブを作成して、そのタブをアクティブにする。
            browser.switch_to.new_window('tab') 

finally:
    # プログラム終了後にも、ページは開いたまま
    os.kill(browser.service.process.pid,signal.SIGTERM)

プログラムの良し悪しはおいておいて、実行したら全部のサイトでログインができます。

終わり

初めてQiitaに投稿しますが、「この程度のこと、書き起こす必要なくないか…?」と思いながら後半書きました。ヤバいところがあれば教えてください…

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?