就活のES対策をプログラミングで自動化する

AI・プログラミング

みなさんこんにちは! 現在、東京大学工学部に在籍している、さとうじょうゆです!

この記事では「ライバルよりも効率的にES対策を行う方法」をわかりやすく解説します

ES対策において重要なポイント
  • 過去の例から傾向を学ぶ
  • 質問ごとに適当な回答を整理する
  • 企業ごとの特徴を分析する
さとじょくん
さとじょくん

今回は、上記のポイントを押さえながらライバルよりも効率的にES対策をする方法を教えるぞ!

具体的には、「ES情報を整理してcsv形式に保存する作業を自動化」していきます

詳しいことは、この先を読んでください!Python使います!

※この記事を読んでわからないことがあればお気軽にお問い合わせください

この記事で紹介した方法でES対策をすれば、ライバルから差がつけられること間違いなし!

さとじょくん
さとじょくん

それでは行ってみよう!

ONE CAREERという就活情報サイト

今回、ES対策をするにあたって、ワンキャリアという就活情報サイトを参考にしていきます!

このサイトは、企業ごとの就活情報が詳細にまとまっているため、就活対策としてはとても有用です

このサイトから、先輩方のES情報を整理してcsvに保存するコードをPythonを使ってここからは書いていきます

さとじょくん
さとじょくん

コピペで大丈夫!

とりあえずここら辺はインポートしておいてください

import requests
from bs4 import BeautifulSoup
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import os
import time
from tqdm import tqdm

【STEP1】One Careerのウェブサイトに自動的にログイン

WebDriverの初期化 (Chromeを使用)

webdriver.Chrome() を使って、Google Chromeブラウザの自動操作用に browser オブジェクトを初期化しています

Chrome WebDriverがシステムにインストールされており、実行可能なパスに設定されていることが必要です

One Careerのログインページにアクセス

browser.get(url) を使用して、指定された url(One Careerのログインページ)にブラウザでアクセスします

ユーザーからの入力受付

ユーザーにメールアドレスとパスワードを入力してもらいます

メールアドレスとパスワードの入力フィールドを見つけて、値を入力

browser.find_element(By.ID, “user_email”) と browser.find_element(By.ID, “user_password”) を使用して、メールアドレスとパスワードの入力フィールド(HTML要素)を見つけます

見つけた入力フィールドに対して、send_keys() メソッドを使用して、ユーザーが入力したメールアドレスとパスワードをそれぞれのフィールドに入力します

ログインボタンを見つけてクリック

browser.find_element(By.CSS_SELECTOR, “#new_user > input.v2-vform-submit”) を使用して、ログインボタンを見つけます

ここでは、CSSセレクタを使ってログインボタンに対応するHTML要素を指定しています

click() メソッドを使用してログインボタンをクリックし、ログイン処理を実行します

ここまでのコードを実行すると、ワンキャリアのサイトに自動でログインすることができます!

【STEP2】特定の会社に関連するESのURLを収集する

ユーザー入力の受付

ユーザーに会社名を入力してもらい、その値を company_name 変数に格納します

urlの収集のための準備

収集されるURLを格納するための空のリスト url_list を初期化します

URL収集のメインループ

tqdm(range(1, 5)) を使用して、進行状況を視覚的に表示しながら、1ページから4ページまでの各ページに対してループを実行します

各イテレーションで、company_name とページ番号 i を使ってアクセスするURLを構築し、browser.get(url) でそのページにアクセスします

time.sleep(3) は、ページのロード完了を待つための暫定的な解決策です

ただし、この方法は効率が悪く、ページのロード時間に依存します

browser.find_elements(By.CLASS_NAME, “v2-experiences__item”) で、エントリーシートの各項目を表すHTML要素を全て取得します

それぞれの要素 (elem) に対して、find_element(By.TAG_NAME, ‘a’) でリンクを表す <a> タグを見つけ、get_attribute(“href”) でそのリンクのURLを取得します

取得したURLを url_list に追加し、コンソールに出力します

URLリストの重複削除と長さの表示

list(set(url_list)) を使用して url_list 内の重複を削除し、再びリストに変換します

最後に、リストの長さ(ユニークなURLの数)を出力します

ここまでのコードを実行すると、調べたい会社のESページに自動的に遷移します!

【STEP3】URLリストの各ESページから情報を抽出する

リストの初期化

これらの行は、質問(question_list)、回答(answer_list)、寄稿者(contribute_list)情報を保存するための空のリストを初期化します

各ESを抽出する

for url in tqdm(url_list): は、進行状況を視覚的に表示しながら、url_list 内の各URLに対してループを実行します

browser.get(url) で指定されたURLにアクセスし、time.sleep(3) でページが完全にロードされるのを待ちます

browser.find_element(By.CLASS_NAME, “v2-curriculum-item-body__content”).text で、質問と回答が含まれる要素のテキストを取得し、elem = elem.split(“\n”) で改行ごとに分割してリスト化します

内部の for ループ (for i in range(0, num, 2):) は、質問と回答のペアを処理します

2つごとにインデックスを進めることで、質問(q)とその直後の回答(a)を取得します

同じページから寄稿者情報(c)も browser.find_element(By.CLASS_NAME, “v2-selection-step-header__title”).text を使用して取得します

取得した質問、回答、寄稿者情報をそれぞれ question_list, answer_list, contribute_list に追加します

try-except ブロックは、処理中にエラーが発生した場合にプログラムが停止しないようにします

エラーが発生した場合は、そのES項目の処理をスキップして次に進みます

ここまでのコードを実行すると、自動で企業のES情報を収集することができます!

【STEP4】データを整理し、CSVファイルとして保存する

カテゴリ項目の定義とデータ準備

category_items は、DataFrameで使用されるカラム名(”問”、”答”、”属性”)を定義しています

length は、質問リスト(question_list)の長さを取得し、これが後でデータを処理する際のループの回数を決定します

data は、最終的なデータを格納するための空のリストを初期化します

各質問、回答、寄稿者情報のデータ構造化

この for ループは、question_list、answer_list、contribute_list の各リストを通過し、それぞれの要素からデータを取得して detail というディクショナリに格納します

detail ディクショナリは、category_items に対応するキー(”問”、”答”、”属性”)に、それぞれのリストからの値を割り当てます

各イテレーションで、完成した detail ディクショナリ(datum としても指定されます)を data リストに追加します

Pandas DataFrameの作成とCSVへの保存

pd.DataFrame(data) を使用して、data リストからPandas DataFrameを作成します

DataFrameは、表形式のデータを操作するための便利な構造です

df.to_csv(company_name + “.csv”, index=False) は、DataFrameをCSVファイルとして保存します

ファイル名はユーザーが入力した会社名(company_name)に基づいており、.csv 拡張子が追加されます

index=False パラメータは、DataFrameのインデックスをCSVファイルに書き込まないように指定します

ここまでの、コードを実行すると、上の画像のように企業のES情報がまとまったcsvファイルが出力されます!

さとじょくん
さとじょくん

このプログラムで就活を少し有利に!

プログラミングでES対策も自動化することができる

このように、プログラムでESを整理して出力することができます

プログラミングって便利ですね

参照

僕のお友達のR.G.くんのコードを参考にさせていただきました

コメント

タイトルとURLをコピーしました