データスクレイピングの方法

皆さん、こんにちは。UiPathCommunity Edition
Studio 2018.3.2 - 10/30/2018
をWindows10 使用しています。
例えばタウンページでiタウンページ
東京都 ケーキ で検索します。
検索結果の中から店名、住所、電話番号をスクレイピングしたいと思います。
アカデミーのビデオに従って、レコーディングをして、エクセルファイルに書き込んでいます。
先に上げた例の場合、1から何番目かまでは、
1.店名
2.一言宣伝
3.住所
4.電話番号
となっています。
ところが、それ以降は
1.店名
2.住所
3.電話番号
となっているため、エクセルファイルに書き込んだ時
一言宣伝がある時は
1列目 店名
2列目 住所
3列目 電話番号
と正常に取得できるのですが、一言宣伝が無い店の場合、
1列目 店名
2列目 電話番号
となり、住所が飛んでしまいます。
この場合、どのようにしたら良いのでしょうか?
よろしくお願いします。

「構造化データを抽出」のプロパティ[メタデータ抽出]でセレクターの調整が必要です。
おそらく、idx='*'に加えてtag、classの値を付記することで安定した結果になります。
ただ少し難しいかもしれないので、代わりに以下の方法がオススメです。

検索結果のページではURLだけを取得(構造化データを抽出)。
For Each RowでURLから各店舗ページ( テラサワ・ケーキ・パンショップ(台東区浅草/菓子店、菓子パン製造、ケーキショップ、サンドイッチ店、パン店、ベーカリー、洋菓子製造、洋菓子店)(電話番号:03-3875-5611)-iタウンページ )にアクセスして
そのページで必要な情報(店名、住所、電話番号)を取得(Get Text)するのはどうでしょうか。

対象件数だけ実行時間は増えますが、比較的簡単にデータ取得できるかと思います。

1 Like

x00012 さん、回答ありがとうございます。
なんとなくイメージはわかりました。
まず、一覧から各店舗をクリックして、そこから基本情報をクリックして、必要な情報を取得する。
そして、元の一覧に戻って次の店舗へ移動して繰り返す。
複数ページにわたる場合、1ページ目が終わったら次のページへ行って、終わりまで繰り返す。
こんなイメージですね。
ただ、それを具体的にどんなコードを書けば良いのかとなるとちょっとわかりません。その当たり、レコーディングの方法、For Each Rowの使い方などもう少し具体的に教えていただけませんか。
お手数をおかけしますが、よろしくお願いします。

1 Like