今回行うこと
タウンワークのページをスクレイピングしてみたいと思います。
GASだとクリックの操作が苦手みたいなので、
各種条件:地域や職種などの条件が指定されたページを対象としています。
条件は以下としてみました。
・地域:北海道
・エリア:札幌市
・職種:IT/コンピュータすべて
URLはこちらとなっています。
今回は対象ページから「社名」と「業務名」を取得してみます。
タウンワーク スクレイピングコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
function Gas_WebScraping03() { // タウンワークのURLを指定(条件までは手動でクリックした状態) let get_url = "https://townwork.net/hokkaidou/ct_ma10100/jc_005/?ds=04"; // getContentTest()のデフォルト指定は(utf-8)になるので省略 let get_html = UrlFetchApp.fetch(get_url).getContentText(); let ArrayFull = [] let Array01 = [] let Array02 = [] // 社名と業務名の取得 ArrayFull = Parser.data(get_html).from('job-lst-main-contents').to('</p>').iterate(); // 社名と業務名の取得から、社名だけ切り分け用 Array01 = Parser.data(get_html).from('job-lst-main-ttl-txt').to('</h3>').iterate(); // 社名と業務名の取得から、業務名だけ切り分け用 Array02 = Parser.data(get_html).from('job-lst-main-txt-lnk').to('</p>').iterate(); /********************************************* * 社名と業務名の取得が正しく取得出来ているか確認する *********************************************/ for(let x = 0; x < ArrayFull.length; x++){ console.log("ArrayFull[" + x + "] = " + ArrayFull[x]); } /********************************************* * 社名だけ切り分けを行う *********************************************/ for(let x = 0; x < Array01.length; x++){ // 不要な文字列を削除 Array01[x] = Array01[x].replace(/".*>/,"") console.log("Array01[" + x + "] = " + Array01[x]); } /********************************************* * 業務名だけ切り分けを行う *********************************************/ for(let x = 0; x < Array02.length; x++){ // 不要な文字列を削除 Array02[x] = Array02[x].replace(/".*>/,"") console.log("Array02[" + x + "] = " + Array02[x]); } } |
解説
UrlFetchAppしてURLの情報を取得するまでは前回と同じですね。
次に取得したhtmlから社名と業務名を抜き出しています。
1 2 |
// 社名と業務名の取得 ArrayFull = Parser.data(get_html).from('job-lst-main-contents').to('</p>').iterate(); |
これは以下の部分になります。
From:job-lst-main-contents で30件ヒットしています。
To:pとして、業務名のテキスト表示の部分で終了です。
この時点での変数「ArrayFull」のconsole.logを確認すると
社名と業務名が取得されていることが分かります。
続いて変数「Array01」へ「社名」だけ抜き出して格納しています。
class名に「job-lst-main-ttl-txt」
h3タグに「社名」
のテキストが格納されています。
下記の部分で抜き出しています。
1 2 |
// 社名と業務名の取得から、社名だけ切り分け用 Array01 = Parser.data(get_html).from('job-lst-main-ttl-txt').to('</h3>').iterate(); |
業務名も同様です。下記の部分で抜き出しています。
1 2 |
// 社名と業務名の取得から、業務名だけ切り分け用 Array02 = Parser.data(get_html).from('job-lst-main-txt-lnk').to('</p>').iterate(); |
最後にforでループを回して30件分のデータを確認です。
・Array01の配列には社名
・Array02の配列には業務名
が入っていることが確認出来ました!
今回は以上となります。
最後までお読みいただきありがとうございました!