ハローワークインターネットサービス 求人情報基本条件入力
https://www.hellowork.go.jp/servicef/130020.do?action=initDisp&screenId=130020
上記から検索条件を指定して検索すると、職種、雇用形態、賃金などが記載された「求人情報一覧」という表がでてきます。
この表を取得することを目指します。
・インポート
import pandas as pd from time import sleep
pandasのほか、timesのsleepをインポート。sleepは一時的に処理を止めるときに使います。
・URLを作る
pageno=1
url=("https://www.hellowork.go.jp/servicef/130050.do?"
"fwListNaviBtn1=1&"
"fwListNowPage=1&"
"fwListLeftPage=" + str(pageno) +"&" #ページ番号
"fwListNaviCount=1&"
"kyujinShuruiHidden=1&" #フルタイム
"koyoKeitaiHidden=1&" #正社員
"todofukenHidden=38&" #愛媛県
"screenId=130050&"
"xab_vrbs=detailJokenDispButton,commonNextScreen,detailJokenChangeButton,commonDetailInfo")
情報を取得するURLを作成します。普通に検索しただけではURLが出てこないので、ソースと下記ページを参考に作りました。
ハローワークの一覧を簡易クロールして求人ページのURLを抽出する
今回は「フルタイム」「正社員」「愛媛県」の求人を指定しました。それぞれの数値はソースなどで確認してください。また、URLの前半部分の「13050」とscreenIdは変更することがあるようです。
・表の取得
df_tmp=pd.read_html(url,match="求人番号",header=0) df=df_tmp[0]
作成したURLからread_htmlで表を取得します。read_htmlの使い方は以前書きました。
プログラミング学習:pandasでweb上の表を取得する。(python)
read_htmlでは、webページ上の表を一つずつリストとして取得します。上記記事ではリスト番号から目的の表を探しましたが、今回は match="求人番号"で"求人番号"という言葉が含まれている表だけを取得しています。header=0で1行目を列名として使います。
df=df_tmp[0]で目的の表を取り出し。match指定していしているので目的の表1つだけがdf_tmpに取得されているはずです(要確認)
・複数ページ取得
tables=pd.DataFrame()
for pageno in range(1,4):
print(pageno)
url=("https://www.hellowork.go.jp/servicef/130050.do?"
"fwListNaviBtn1=1&"
"fwListNowPage=1&"
"fwListLeftPage=" + str(pageno) +"&"
"fwListNaviCount=1&"
"kyujinShuruiHidden=1&" #フルタイム
"koyoKeitaiHidden=1&" #正社員
"todofukenHidden=38&" #愛媛県
"screenId=130050&"
"xab_vrbs=detailJokenDispButton,commonNextScreen,detailJokenChangeButton,commonDetailInfo")
df_tmp=pd.read_html(url,match="求人番号",header=0)
tables=tables.append(df_tmp[0]).reset_index(drop=True)
sleep(1)
1~3ページ目まで取得する例です。各ページの表をtablesにappendで結合します。ページ移行時にsleepで1秒待機しています。
出力(一部)
| Unnamed: 0 | NO | 求人番号 | 職種 | 雇用形態/賃金(税込) | 就業時間/休日/週休二日 | 産業 | 沿線/就業場所 | 受理日 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | NEW!◎ | 21 | 38010- 23863381 | 一般作業 | 正社員/206,100円~274,800円 | 変形 1ヶ月単位1)08:15~17:00/日他/その他 | 建設業のうち一般土木建築工事業 | 愛媛県伊予郡松前町 | 平成30年7月10日 |
| 1 | NEW!◎ | 22 | 38010- 23866581 | 運転手(大型) | 正社員/250,000円~400,000円 | 変形 1ヶ月単位1)08:00~17:00/他/その他 | 運輸業,郵便業のうち特定貨物自動車運送業 | 愛媛県松山市 | 平成30年7月10日 |
| 2 | NEW!◎ | 23 | 38010- 23868781 | 介護支援専門員(施設) | 正社員/165,000円~220,000円 | 変形 1ヶ月単位1)08:30~17:30/他/その他 | 医療,福祉のうち老人福祉・介護事業 | 愛媛県東温市 | 平成30年7月10日 |
| 3 | NEW!◎ | 24 | 38010- 23886881 | 大型車両整備士 | 正社員/287,086円~337,098円 | 1)08:30~17:30/日祝他/その他 | 運輸業,郵便業のうち一般貨物自動車運送業 | 愛媛県東温市 | 平成30年7月10日 |
| 4 | NEW!◎ | 25 | 38010- 23893781 | 看護師・准看護師 | 正社員/190,000円~240,000円 | 変形 1ヶ月単位1)08:45~18:152)08:45~18:303)08:45~12:4... | 医療,福祉のうち一般診療所 | 愛媛県松山市 | 平成30年7月10日 |
無事、一覧表の取得が出来ました。これを整理して、ざっくりどんな業種・地域に求人が多いかや賃金の傾向などを見てみたいと思います。
参考: