見出し画像

【UiPath StudioXの遊びかた20】逐条編 ⑰YouTubeで遊ぼう⑥~表抽出で遊ぼう~わがままな自分をプロとか第一人者と勘違いしてる素人の要求が一番恐ろしい。大事なのは、確認と規則性

さてと、前回

で、

セレクターの整理のポイント

まではやったので~~~YouTubeの検索結果から、

表抽出機能でどこまで抜けるか試してみよう

んだば、早速


今回使う機能

表抽出(Studioクラシックのデータスクレイピングに相当)

上にあるコイツな

ところで、

データスクレイピングとは

にも書いてるとおり、

構造化されたWEBなんかのデータを抜いてくる手法

で、実は

でやった、

GoogleAppsScript

でも、

APIキー

なんかがあれば抜けなくはないんだけど、スクレイピングで一番怖いのは、

下手に扱う=抜いてくる元データの更新できる機能まで知らずに組み込んでしまう

と、

元のサイトのデータ自体を勝手に書き換えたり、破壊したりする

こともあるので、

慎重に扱わないと、そのサイト自体を破壊しかねない
=クラッキングの原因
☞ハッキングとみなされたり、多額の賠償を求められかねない

ってこと、、、。素人程、

そんな大げさな

って思う人も多いんだけど、マジで恐ろしいから、

を書いてた当時の現場で、あんなことも出来るこんなことも出来るみたいな記事をWEBで見つけた自称プロな他部署の上司がゆーてきてて、

クラッキングとか違法、規約違反になることを普通に
いやそれは、こちら側では出来ないしやらないほうがいい

ってゆーてたんだけど、何を勘違いしたのか最終的に、

「自分たちが要求する機能をもっと実現してくれるエンジニアさんが欲しい」
ってなぜか、オイラの方が、雇い止めになってた( ´∀` )
☞もっと、違法なこととか危険なことをやってくれるエンジニアがほしい
=自分たちの業務とゆー名のわがままに合わせて、ハッキングとかクラッキングをやってくれる人が欲しい

ってゆ~てるようなモノ( ´∀` )

なので~~~

ま、表抽出機能を使う程度であれば、あくまでも

閲覧してる程度で問題のないWEBサイトが多い

んだけど、

APIキーなんかでやるときはマジで気を付けてね

☞APIキーを入手してもないし、入手するまでもなく、結構色々遊べるのでこのマガジンではAPIを使った機能なんてやる気もないが( ´∀` )

さてと、前置きが長くなったけど、

実際に操作してみよう

前回までのロボットで、

ここまでは実現できてるので~~~
表抽出を左クリック
てな感じで出てくるので、
抽出するデータを選択を左クリック
タイトルを選んで左クリック
textを選んで~~~
確認を左クリック
プレビューを左クリックすると、、、
何か変な感じだね( ´∀` )

って実は、今のYouTubeのページを上から下にスクロールすると、

今選んだのと同じ構造になってるところをちゃんと拾ってくれてるんだよね~~~

上から2個目
上から3個目

何故、こんなことが起きるかと言えば、

人間の目では、YouTubeのページは、キーワードに関連する動画を上から下に羅列してるように見えても、実は

色んな構造データを一覧にリンクなんかで整理してるだけ

だから。

そう、ここで出てきた表抽出機能で大事なキーワードが

構造化

なんだよね~~~

つまり、一見同じような羅列に見えて、

全く違う構造の表を検索結果に出してきてるってこと

んだば、操作に戻って、URLも欲しいので~~~

同じところを選んで今度はURLでやって~~~
プレビューを左クリック~~~
URLも抜けてんね( ´∀` )
各列のコイツを左クリックして~~~
てな感じで編集して、「保存して閉じる」を左クリック~~~
もっかいプレビュー
らしくなったね~~~
なので~~~
ココも保存して閉じる
一番下に追加されてるので~~~
切り取って、てな感じでココに貼り付け移動~~~
前々回くらいで間に追加したコイツラは使わないので削除~~~

今回は、抽出した結果を全て処理年月シートに書き込んでいきたいので~~~ここまでで元々作ってるExcelの操作

コイツらちゃんを、、、ドラッグして囲んであげて
てな感じにして~~
移動~~~

で、展開してあげて、ちょっと分かりにくいので、繰り返し(各シート)アクティビティは縮めてあげて~~~

ココに移動~~~
てな順番で左クリックして~~~
さらにシートを選んで、処理年月シート名変数を左クリックして~~~
保存を左クリック
てな感じになったら、、、

繰り返し(各シート)アクティビティの中にあったブックを保存アクティビティを

ココに移動~~~

実行してみると、、、

実行出来たので~~~
てな感じで実現できた( ´∀` )

YouTubeだと、実行のタイミングで、

同じ構造のデータが増減するので、記事を書いてる最中は3つだったのが、実行時点では4つになってんね( ´∀` )

ここでポイント①:スクレイピングで大事なのは、構造化なんだけど、、、

オイラ達が抜いてくるものは

WEBスクレイピング

ってゅーくらい

WEB=人が生活の中で操作するもの

なので~~~

表らしさ=構造化をガッチガチに固めてしまうと、、、

コンテンツが勝負なYouTubeみたいなサイトを業務とか表構造ばかりを意識した作りにしてしまうと、

無味乾燥で、コンテンツの充実さを殺しかねない

例えばより表に近いサイトで、オイラは経済ニュースが好きなので、、、

なんかをやってみると、、、

てな感じで抽出すると、、、
ズラッとこんな感じになるし、

メルカリ先生で、最近GraniphのTシャツにハマっているので~~~

こんな感じのサイトで表抽出をしてみると、、、

なんて感じで普通にできちゃう

だけど、

別に表抽出とかスクレイピングのためだけに、
そのWEBサイト自体が存在してるわけではない

し、YouTubeだと規則性のない構造データだから、

じゃあコンテンツとして終わってるか

と言えば、

他の追随を許さないくらい充実してるでしょ( ´∀` )

要は、

表抽出機能に向いてるWEBサイト
☞構造が単純なコンテンツの並び

ってだけで、

表抽出に向かないサイトの場合には、
それなりに他の方法を考えてあげればいい

だけの話ってことで( ´∀` )

一歩前へ:これがStudioでの開発だと、

ローカルが見れて、ブレークポイントなんかも見えるところにあって
普通に使える

から、実行中に、どんなデータがスクレイピング出来てるかを確認しながら開発出来るんだけど、

StudioXだと、何かと確認したり、
確認後にデータテーブルをマージしていくのがややこしい

からね~~~ま、後は、

自分がやりたいことか、その時の顧客の要求次第

って感じかね( ´∀` )

冒頭でゆーてるとおり、

実際に動かしたこともない人ほど、これまでの記事で書いてる大事な作法

  1. やりたい処理の前に、確認を入れる

  2. WEBスクレイピングはサイト自体の構造=規則性

なんて知ろうと(素人)もせずに、ネットで検索した生半可な知識だけで、

これをやれ!
お金を払ってるんだから、作るべき

なんてゆ~てくるからね~~~~

ここでポイント②:動的プログラミングって考え方が身に着いてる人なら、

WEBコンテンツ=UiPath のセレクター周りなんざ、

規則性がないし、日々変わる

ってわかってるんで、

変化してもいいように、
最初っからソースは組み込むんだよね~~~( ´∀` )

お遊びできちんと動かしもせずに、頭だけで理解した気になって、やったこともないサイトでも「出来る!!」なんて豪語してる人ほど、パブリッシュやリリースする度に、

バグを起こしてロボットをコカしまくる

からね~~~。

ま、動かしながら最適解はその都度決めるしかないやな( ´∀` )アヒャヒャヒャ

ここでポイント③:裏を返すと

一般に公開されてるサイトか否か、業務用に会社の中だけで公開されてるか否かにかかわらず、

  • WEBシステムでアクセスが出来て、

  • 構造化=ある程度のページ全体の構成やパターンが決まっている

モノであれば、実は何でもスクレイピング=抜き出してくることが出来るくらい非常に優秀で強力なので~~~実は、

noteのダッシュボードなんかも

みたいな感じで抜けなくはないんだよね~~~

後は、全記事リストを吐き出すシートなんかを作ってVLOOKUPでどの記事が今月はアクセス数が多かったからなんかをマガジンごとに分析してもいいし( ´∀` )

APIキー

なんか使ってWEBスクレイピングしないといけないような他のプラットフォームに比べて、構造化されたWEBサイトなら、

安全に合法的に、データを抜くことくらいなら朝飯前で出来ちゃうって話。

Backlogにしろ、YouTubeにしろ、メルカリにしろ、noteにしろ、

  1. 運営者と同じ権限のAPIキーなんか公開してるわけないし、

  2. 公開されてる程度なAPIキーなら出来ることは限られてるし、

  3. 業務が~、仕事だから~で、公開されていないAPIキーを入手して、

  4. 自分ところが使いやすいようにAPIキーを利用する

なんてどれも、

規約違反だし、違法だからね~~~

かといって、規約にロボットって言葉が載ってるからって、

本来、一般的に公開されてるページをセレクターを使ってロボットで取得するまで全部違法

とか思い込んでいたら、

WEBサイトと連携できるUiPath の旨味を殺すだけ

だからね。

  • 便所の落書きレベルで既に一般に公開されてるリンクで

  • 公開されてるページ内の情報を

  • そのサイト自体に何の影響もない安全な方法で抜く

程度で文句をゆーくらいなら最初から、

WEBサイトの旨味や特質が分かってないなら公開すんな( ´∀` )

って話なんで~~~

ま、色々抜けるし遊べて協力だから遊べる範囲で遊んでみてね。

好きな音楽のまとめサイトやファッションサイトなんかでも同じことが出来るだろうし( ´∀` )

手作業だと骨の折れる作業が、自動化できる
のがロボットの最大の旨味なんで( ´∀` )

ここでポイント④:ここまで機能を書くと、必ず出てくるのが

こんな操作もできるから、じゃあロボットを使って、

  • メルカリとか楽天市場みたいなサイトで、

  • 自動購入とか自動出品

みたいなことをやろうとする輩なんだけど、サイトのデザインやレイアウトが変わって、セレクターが少しずれて、

10個注文するところが1010個なんかになってみ
ロボットがやったことだから、じゃあ取り消せばいい

と思って、

メルカリなんかに取り消してください

って問い合わせが頻繁になったら、サイト運営者としては、その操作が

ロボットがやったのか、人が手で操作して確認しながらやったのか
確認のしようがないのに、取り消しを認められるとすると、

好き勝手に注文だけして、後から注文を取り消せる

みたいな状態になると、ECサイトの旨味がなくなって、

運営側も利用者も安心して取引出来ないでしょ。

ま、だから冒頭に書いたような、

機能面だけを齧って、出来るからやれみたいにゆーてくるアホ丸出しな我儘な要求は、安全面から考えて

断るのがエンジニアの仕事

ではあるんだけどね~~~( ´∀` )

作れるものは要求されたら何でも言われたとおりに作る
のが当たり前と
素人かレガシーエンジニアさんほど思ってるみたいだけど、

作るだけがエンジニアの仕事ではない

し、そんな違法や規約違反を、思い付きでやれとかゆーこと自体

アホ丸出しだからやめた方がいい

結論(まとめ)

いくら出来るからって、一般的に公開されてるサイトでやっていいのは、

  • サイトを移動する

  • 閲覧する、再生する=ストリーミング

  • 表示されてる構造化されてるデータをスクレイピングする

  • ExcelやWordなんかのファイルにスクレイピングの結果を出力する

程度。それ以上の操作をロボットで自動化させて、サイトを破壊するとか多額の支払いが発生するなんてなっても、

全ては自己責任

サイトを作る側も運営する側もそもそも

スクレイピングやロボットなんかを想定して
WEBサイトの機能を作っていない

からね( ´∀` )

言われなくてもそんなこと当たり前なこと、、、

みたいな人ほど、いざ自分でロボットで自動化しようとか業務になると、そんなマナーなんか忘れて、

  • ロボットが正常に動かなくなった

  • 変な発注して大量の在庫が発生した

とかで、ロボットを勝手に組んだ自分ではなく、

勝手にデザインを変更したWEBサイトが悪い
それが認められないなら今度は、
こんな開発環境を作ったUiPathが悪い
みたいなことゆーてる輩がいる

からね( ´∀` )まさに、

生兵法は怪我の素

だし、

自分の勉強不足やら非を認めないだけでしょ( ´∀` )
とりあえず、ロボットは誰にとっても安全に使おうね~~~~

さてと、ここまでのソース

見て分かると思うけど、このマガジンの最初の記事

から組み込んでたソースが丸っと繋がったのが分かると思う💃

リファクタリング

今回は、2つのリンクが追加になったので、ノートブックに外出し~~~

コイツを
てな感じにして、
ココの厳密セレクターも
てな感じで~~~

同じ感じで

コイツも
てな感じで外出ししとく( ´∀` )

実行すると、、、

下のファイルでちゃんと更新されてんね👀
問題なしだね( ´∀` )

ま、既にお気づきかなとは思うんだけど、

これまでのソースは、

①アタッチ>②要素の確認>③クリックなんかの操作

って基本的な作法を身に付けさせたくて、敢えてアタッチから使ってただけど、表の抽出に関しては、

アクティビティの中自体でアタッチを建付けで組み込んでるから

スクレイピングするだけなら別に、一番シンプルには、

だけでもイケるんだよね( ´∀` )

今回のソースまとめ

すっげ~~~シンプル
記事書きながら
noteのダッシュボードからスクレイピング機能
も入れたからそこだけ余計( ´∀` )

さてと次回は、

スクレイピングした値をExcelに貼り付けるまでは出来たんだけど、このままだと、処理を実行する度に、同じシートにペタペタ貼り付けてるだけ
☞前の値が残ってるので( ´∀` )

シートの値をクリアするアクティビティ

を組み込んで、

貼付け前ににシートを綺麗にしてく操作を組み込んでこ( ´∀` )

この記事が気に入ったらサポートをしてみませんか?