kazumwat
(Kazuma Watanabe)
1
掲題について、
①Excelに入力されているキーワードを読み取る
②読み取ったキーワードでgoogle検索
③検索結果をDatascrapingで取得
④取得したデータをExcelに貼り付ける
上記の①~④の動作をExcelに入力してあるキーワード分だけループさせたいと考えています。
現状、検索のループはできているのですが、
Datascrapingで取得したデータをExcelに貼り付けても、全てのデータが一番最初に取得したものになってしまいます。
一応、調べてもみて、④のExcelへの貼り付け後、ブラウザを閉じる動作を入れてみたりしたのですが、結果はかわりませんでした。。
どういった原因が考えられるか教えてください!!
お願いします。
yukino
(kawahara)
2
作成したワークフローを貼っていただけると一番早いですが、
・毎回同じシート/セルにスクレイピング結果を貼っているの
・ファイルの保存を忘れているので最後の1個だけ結果的に残る
・2回目以降は実は取得に失敗している(ので最初の結果を毎回貼り付けている)
あたりが「あるある」かなぁ、という気がしますね。
kazumwat
(Kazuma Watanabe)
3
ありがとうございます、下記にワークフローを貼りましたのでご確認お願いします。
全体のワークフローです。
datascrapingのワークフローです
yukinoさんのご指摘の通り、二回以降の取得が失敗しているような気がします。
yukino
(kawahara)
4
あれ?
ざっと見怪しげなところが見つからない・・・・。
毎回ブラウザを閉じているので、1回目の検索結果が画面に残っていて検索結果とは別に1回目のデータを取っているとも思えないし。。。実はExcelから取得する検索キーワードが毎回一緒だった、というコトはないですか・・・?
原因切り分けとして、
ExtractDataTable変数のスコープを[Open Browser]に変更してみてください。
そうすると変数が毎回初期化されるので、2回目以降の抽出が失敗していたら結果が空っぽになり、1シート目はデータあり、2シート目以降はデータなし、になるはずです。
1 Like
kazumwat
(Kazuma Watanabe)
5
変数のスコープを教えて頂いた通りに変更したことで解決しました。
ありがとうございます!
今回のことで思ったのですが、
Datascrapingの変数は上書きはされないという認識でいいんですか?
→Datascrapingの変数のデータが残っている為、ループしてもwebデータ取得に行かなかった??
yukino
(kawahara)
6
「使用する変数はきちんと都度初期化しましょうね」というのが今回の教訓のように思いますが、
この認識は違うような気がします。
何が普通か、という議論はありますが、
普通は同一変数に値を複数回代入したら、最後に代入した値を保持していて欲しいなぁ、と思うのが自然だと思うので(今回のように)。
(個人的にはツールの不具合じゃね?という気がします)
しれっと、「こんなことがありましたが、そういうものですか?」とUiPathサポートに情報提供して差し上げるといつか改善されるのではないかと思います。。。
yukino
(kawahara)
7
この回答をリンクしてもらった先で知ったのですが、
データスクレイピングの引数は[inout]型・・・入力としても出力としても使うので、
元データを保持するというのが仕様らしいです。
で、それがどこでわかるかと言うと以下のツールチップ。
[InOut] Argument。。。こんなのわからないよー(汗
おそらく改ページの処理で、データテーブルに追加しているからなのでしょうね。
[出力]セクションにあるのは不親切と言えば不親切ですが。
kazumwat
(Kazuma Watanabe)
8
お久しぶりです。
原因のご連絡ありがとうございます。
…自分の挙げた質問への回答を簡単に言うと、
上記の理由から変数がデータ保持してるから都度初期化しないとだめだよって認識でいいんですよね?
ちなみに作成したロボはGoogleのセキュリティ(短い時間に何回も似たような検索をかけると私はロボットではありませんと証明しないといけないやつ)の前に散りました。。。。
yukino
(kawahara)
9
はい、良いです。
変数初期化は一般的なエンジニアでもたまに初期化忘れて大目玉を食らう奴なので、
「変数は初期化してから使う」を癖にしておくと良いです。
ロボットが散ったとのこと、残念です。。。
サイトによってはロボットによるアクセス(クロール)を禁止しているところもあるので、使い方はよく調べてから、ということですね(これも教訓だな、うん)。
私、UiPath独学初心者です。私も同じことに挑戦しています。
データスクレイピングして、Excelの範囲に書込みしたあと、データをクリアとか代入でExtractDataTable=New System.Data.DataTableとか入れてみたりしているのですが、どうしても最初のデータスクレイピングの結果とかその結果の次のページとかが2回目の繰り返しのシートに出てきます。
ブラウザーは開き、1回目のデータはきちんとExcelに書き込めます。2回目以降も1回目の繰り返しの次のボタンを押している様なのです。
データスクレイピングのセレクターの問題なのでしょうか?(検索数は事前に入力ダイアログで変数にして制限しています 30とか50件とか)
論文検索とかで使いたいのですよね。あと特定のワード群のニュースを定期的に引っ張るとか。
初心者なのですみません。