RPA(BizRobo!mini)で特定ユーザの食べログ情報をCSVへ抽出してみた
「Webページをクローリングして、情報をCSVに書き出す」という作業がRPAでできると聞いて、実践してみたという記事です。
自分が苦労したポイントなども織り交ぜて記載するので、最近RPAを始めたという方に見てもらいたいです。
全体図
全体としては割とシンプルです。
食べログのユーザ情報にアクセスして、訪問したお店の概要情報と、実際のレビューの情報をそれぞれCSVに書き出す、といった内容です。
簡単、簡単♪って思いながら始めたのですが、半日ぐらいかかってました。
原因(言い訳)は、休日の緩みと、BizRobo!miniが久しぶりだったから、単純に論理的に考える能力が不足していたからかなと感じます…(泣)
詳細の手順については、以降で説明します。
手順1.typeを作成する
定石どおり、どんな情報を取得するのかを考えてtypeを作成します。
最初は1つのtypeで2つ分の情報を書いていましたが、ループの構造などやツールの制約を考えると自分には難しかったので分けた方がシンプルだと結論付けました。
レビュー情報のtypeにある点数が全部Short Textになっているのも技術的な課題を乗り越えることが出来なかったためです。
ここは本来、3.2や4.5など小数点が入ってくる箇所なため、型としてもNumberが適切かと思いましたが、どうやら4.0や3.0などになったときに整数として入ってしまうようで、その解決法が全然分かりませんでした。(誰か教えて下さい…)
そのため、今は演算などはないのでとりあえずテキスト型で入れてしまい、必要があれば出力先でキャスト(型変換)しようかと思いました。
手順2.ユーザ情報抽出
「食べログ内であるユーザを検索する」ということをしているだけです。
今回検索している「ぷりんす神楽」はどいつだ~い?………あたしだよ!
ってわけで、ユーザとしては自分自身の食べログアカウントです。
手順3.ループで情報を取得する
ループ箇所はここです!少し文字では表しづらいのですが、ページ全体ではなくお店単体が囲まれるわけでもない、ちょうど良い箇所を選んで下さい。笑
ループのポイントとして、上のデザイン側でループを作ろうとしないこと。めっちゃめんどくさいからです。ウェブページを右クリックで選択した方が圧倒的に簡単で早く出来上がります。
手順4.各情報を抽出する
最初に作ったtypeに合わせて入れ込むだけです。
苦戦したのは、ループの構造的な部分です。
店舗情報は店舗をクリックしてから見れる箇所、
レビュー情報はレビュー情報をクリックしてから見れる箇所、という割り切りがどうも最初はうまくついていませんでした。
うまいことやれば一本でも収まるのかな~と思いつつ、分けて考えるのが限界でした。
苦戦したポイント2点目は、店によって評価してない項目があることです。
これによって何が困るかといえば、何も評価がないので抽出エラーとなってしまうことです。これを解決するために、「エラー処理」タブですべてのThenに「無視して続行」を指示しました。
手順5.CSV書き込み
最後、肝心なCSV書き込みなんですが、ここ意味わからないことばっかり書くな!ってブチギレそうになりますよね!
ってことで、以下簡単に解説です。
ファイル名:ファイルを置く場所を記載します。その場所には実際にいまファイルがない状態でよいです。お試しでやってるという場合には、デスクトップ直下とかをしていしておくと分かりやすいかもしれません。
ファイルコンテンツ:ファイルの中に何書くの?ってことを聞かれています。
こんな画面が出てきて、また設定箇所がたくさんあるのですが、最低限設定する箇所は、「フォーマットを適用する変数」のみです。
今まで抽出してきたtypeの名前を選択すれば完了です。
「ファイルエンコーディング」:windows日本語(windows-31)これに設定すれば文字化けシないで済みます。
ファイルに追加:チェックをつけます。
出力結果
こんな感じで抽出できました。
今回はWebクローリング情報をCSVに抽出するという範囲で紹介しました。
ヘッダーとかがないのが少し辛いところではありますが、また次回以降に紹介しようかと思います。
今後のロードマップ(予定)
1.(RPA)自分のアカウントで食べログに記載している情報を抽出する
エクセルでも出力できるようにする
店舗情報とレビュー情報のファイルを結合する
2.(RPA)ラーメンデータベースの点数と比較できるようにラーメンデータベースの情報も抽出する
食べログの点数、自分のレビュー点数と比較する
3.(ttm)テキストマイニングツールで簡単にレビューの傾向を知る
4.(tableau)行ったラーメン屋の場所と点数を可視化する
以上となります。
ではまた。