【SeleniumVBA】ハロワ検索で職種選択
- [記事公開]2023.03.31
- VBA
- ExcelVBA, SeleniumBasic
以前こういう記事を書きました。
ここで紹介しているVBAは、ハロワの求人検索で賃金相場を把握するために自分用に作ったものです。
そうしたところ、「職種選択をしたい」というご相談をもらいましたので、記事にします。
モーダル画面
ハロワの求人検索で職種選択はモーダル画面になっています。
モーダル画面というのは元の画面とは別枠で表示される画面で、一番分かりやすい例でいうとエラーメッセージです。何か操作で問題があったときに、画面に出るエラーのメッセージボックス。あれも一種のモーダル画面です(細かく言うと違うけど)。
調べてみたところ、ハロワのこのモーダル画面は、いったん職種選択をクリックしてモーダル画面を表示させないとHTMLにタグが生成されないのでした(これも語弊があって、クリックしてプログラムが動きタグを生成→その後画面が表示される・・・が正解)。
また、その生成されたタグも、通常の画面のタグとは別のところに記述されている点がちょっとやっかいでした。F12の開発者コンソールで見たとき、モーダル画面のタグは下の方に記述されていました。
これさえ分かれば、あとは要素を特定し、XPathをコピーし、コードに落とし込んでいけばいいです。
hidden要素
職種選択画面では職種の数が多いことから、大分類で表示→クリックしたら小分類を表示という風に、2段構えになっています。
上の図で「事務、管理職」をクリックし、「総務事務、人事事務」のチェックボックスをチェックするとしたら、次のようなコードになります。
'希望する職種
'職種を選択
Set el = driver.FindElementsByXPath("//*[@id=""ID_Btn""]")(4)
el.ScrollIntoView False '下端あわせ
driver.Wait clWAIT
el.Click
driver.Wait clWAIT * 10 '長めに待つ
'事務職、管理職をクリック(hidden要素をopen)
driver.FindElementByXPath("//*[@id=""ID_form_1005""]/div[2]/div[2]/div[2]/div[1]/div").Click
driver.Wait clWAIT * 10 '長めに待つ
'総務事務、人事事務のチェックボックスをチェック
driver.FindElementByXPath("//*[@id=""ID_skCheck0110""]").Click
driver.Wait clWAIT
'決定ボタン
'決定ボタンが下の方にあるのでViewに入れる
Set el = driver.FindElementByXPath("//*[@id=""ID_ok3""]")
el.ScrollIntoView False '下端あわせ
driver.Wait clWAIT
el.Click
driver.Wait clWAIT
細かい手続きについて特に解説はしませんが、FindElementsByXPath(複数形)とFindElementByXPath(単数形)とが混在している点にだけ解説を加えておきます。
複数形か単数形かは、XPathをF12開発者コンソールで取得したとき、Ctrl+F(検索)で検索してみれば判断がつきます。
例えば//*[@id=”ID_Btn”]というXPathだったら、そのまま検索してみればよいです。
そうすると、ハロワ求人検索では9件ヒットします。
検索したところ該当するものが1件だけだったらFindElementBy(単数形)を使えばよいです。
おまけ
今回作ったものをZIPにしておいておきます。
https://kn-sharoushi.com/wp-content/uploads/2023/03/20230329getJobSeekerInfo.zip
ハロワ求人検索の利用規約を読むと、スクレイピングを明確に禁止はしていませんが、迷惑になる行為は禁止されています。スクレイピングは便利ですが、使い方を誤ると多数の人に迷惑をかけます(速すぎるアクセスはサーバ負荷となる)。ですから、driver.Waitの時間はなるべく長めにとるようにしてください。
-
前の記事
タイミーに登録してみた 2023.03.30
-
次の記事
特定社会保険労務士 2023.04.01