WebページをスクレイピングしてExcelに書き込む
この記事では、サイトからスクレイピングした情報を、AUTOROの「各要素を繰り返す」アクションで1行ずつExcelに書き込む方法を紹介します。
※この記事では、AUTOROやスプレッドシート/Excelの各行を繰り返す処理に少し慣れてきた方向けの方法を紹介しています。
スプレッドシート/Excelの繰り返し処理に慣れていない、または初めてだという場合は、こちらの記事もご参照ください。
ワークフロー設定例
スクレイピングする位置のCSSセレクタを確認します。
今回は1ページ内の全検索結果のうち、記事タイトルとリンク(URL)を取得することが目的です。よって、各検索結果が共通で持っているCSSセレクタを見つけ出す必要があります。
確認の結果、今回取得した要素群のCSSセレクタは以下であることが判明しました。
#anchor-archive > ul > li > a
※リンクのURLはa要素に含まれます。
今回は、RoboticCrowdのローカルストレージに存在するExcelファイルを取得します。このために、「ファイルを取得する(GetFile)」アクションを使用します。
・「ストレージプロバイダ」に、Local(Robotic Crowd Strage)を指定
・「ファイル」に、任意のExcelファイルを指定
なお、DropBoxやGoogleDriveに保存されているExcelファイルを扱いたい場合は、以下記事をご参照ください。
取得したファイルから、編集したいシートを選択・取得します。
「シートを選択する(SelectSheet)」アクションを使用して、各パラメータを下記画像のように指定します。
シート名が不明な場合
「ワークシート名」に半角数字の1を入力すると、一番左のシートが取得できます。これはシート名が不明な場合に有効な方法となります。
もし左から2番目のシートを選択したい場合は、半角数字の2を入力してください。
なお、取得したいシート名が半角数字のみで構成されている場合は、以下のような記述としてください。
// 取得したいシート名が半角数字の20230201の場合
${String(20230201)}
拡張子が.xlsの場合
ファイルの拡張子が.xlsxではなく.xlsの場合や、xlsxのサイズが大きすぎる場合は、ミドルウェア入力欄に”xlsx”を指定してください。
なお、ミドルウェアにxlsxを指定してしまうと、上記の「一番左のシートを1とする半角数字指定によるシート取得」が不可能となります。
スプレッドシートへの書き込みには、WriteCellアクションを利用します。
- WriteCellアクションをForEachの中に設定します。
- worksheetの項目には、Selectsheetのアウトプットを紐つけます。
- セルラベルにはA2,B2から1段ずつ入力するために、行番号は繰り返し回数を格納する変数に2を足した数字を設定します。詳細は以下記事をご参照ください。
繰り返し回数が1回目 → row(繰り返し回数を格納する変数)には0が格納されているので、row=0+2 → A2
繰り返し回数が2回目 → row(繰り返し回数を格納する変数)には1が格納されているので、row=1+2 → A3
- 値には、
A列に${data.innerText},B列に${data.href}
を入力します。
シートの編集が終了したため、「ファイルを保存する(SaveFile)」アクションで保存します。
これにより、ローカルストレージにファイルが別名で保存されます。
※上書き保存はできません。
このサンプルではRoboticCrowdのローカルストレージに保存していますが、他のオンラインストレージに保存したい場合は、ストレージプロバイダに他のオンラインストレージのコネクションをご登録ください。
参考:コネクション
OneDrive/SharePointに存在するExcelファイルを取り扱いたい場合は、ExcelOnlineに属するアクションをご使用ください。
項目 | アクション名 | アクション名 | 備考 |
ファイルの取得 | GetFile | GetWorkbook |
|
シートの取得 | SelectSheet | なし | Onlineではシート取得と範囲読み込みが1つのアクションで可能 |
情報の読み込み | ReadCell ReadRange | GetWorksheetCells |
|
情報の書き込み | WriteCell WriteRange | UpdateWorksheetCells |
|
ファイルの保存 | SaveFile | なし | OnlineではOneDrive上で自動上書き保存されます(スプレッドシートと同様) |
# ブラウザを開く
+open_browser_1:
action>: OpenBrowser
url: 'https://autoro.io/case/'
lang: 'ja-JP'
headless: true
useShadowDomSelector: false
private: false
# スクレイピング
+scrape_page_1:
action>: ScrapePage
browser: +open_browser_1
selector: '#anchor-archive > ul > li > a'
text_only: false
ignoreError: true
private: false
# ファイルを取得
+get_file_1:
action>: GetFile
provider: ''
filename: ''
private: false
meta:
display:
# ワークシートを選択
+select_sheet_1:
action>: SelectSheet
filename: +get_file_1
sheetname: 'シート1'
private: false
# 検索結果について繰り返し
+for_each_1:
for_each>:
data: +scrape_page_1
withIndex: row
_do:
# セルに書き込む
+write_cell_1:
action>: WriteCell
worksheet: +select_sheet_1
celllabel: 'A${row + 2}'
value: ${data.innerText}
private: false
# セルに書き込む
+write_cell_2:
action>: WriteCell
worksheet: +select_sheet_1
celllabel: 'B${row + 2}'
value: ${data.href}
private: false
# ファイルを保存
+save_file_1:
action>: SaveFile
provider: ''
filename: +get_file_1
directory: ''
createPath: false
private: false
meta:
display: