データスクレイピングでデータに張ってあるリンク情報を取得

お世話になります。
例えば以下図のようなフォームで各データがテーブルに登録されているとします。

この際、データスクレイピングでデータを取得する際に、項目内の「AAA.pdf」と「BBB.pdf」の
名前とリンク先のURLを一緒に取得できないか調べておりますが、良い情報が見つかりません。
もし無理であれば、リンク先のURLだけか、もしくはこのデータにはpdfのリンクが
張られているという目印のような情報だけでも取得できれば良いと考えております。
※リンクは全てのデータには張られていません。

良い手段をご存じの方がいらっしゃいましたら、アドバイス頂けると幸いです。
どうぞよろしくお願い申し上げます。

image

こんにちは

ひとつの画面上に上記の画像のようなフォーマットが複数あるということでしょうか?
データスクレイピングでこのような情報を取得するためには、その構造がどのように
なっているか依存しますので、可能な範囲で実際の構造がわかる情報を共有いただくと
良いかと思います。
ちなみにInnerHtml属性が取れればそれをもとにリンク有無は判別できるように思います。

Yoichi様
ご返信頂きましてありがとうございます。
情報が不足しており、申し訳ございません。

>ひとつの画面上に上記の画像のようなフォーマットが複数あるということでしょうか?
⇒その通りでございます。このようなフォーマットの記事が下にずっと続いております。

これは社内ポータル(Netcommns)のポータルの記事で、この記事全てをデータスクレイピングで
エクセルへ落そうとしております。
実際、データスクレイピングでこの4項目は問題なく取得は出来そうでした。

>ちなみにInnerHtml属性が取れればそれをもとにリンク有無は判別できるように思います。
⇒このフォーラムで以下の記事を見てみたのですが、今の私のレベルでは理解が出来ませんでした。
[ページ上の特定のリンク先URLをすべて取得したい Forum]
ページ上の特定のリンク先URLをすべて取得したい

InnerHtml属性が取れるかどうかを調べるにはどのような確認をすればよいでしょうか。
また、どのように指定すれば良いのか教えて頂けると幸いです。

お手数ですが、よろしくお願い致します。

こんにちは

まず最初に
上記の「こんにちは~」のテキストは取得できますでしょうか?
取得できるならプレビュー画面で、Edit data Definitionボタンを押して
定義情報を編集することになります。
ちなみに上記のチューニングは現時点ではクラシックモードの方が
やりやすいので、モダンデザインにしているのでしたら一旦クラシックに
してもらえればと思います。

ご連絡頂きましてありがとうございます。

UiPathより以下の通りデータスクレイピングしてみました。
該当のテキストは「内容」で、問題なく取得できております。
※データの内容は公開できないので、歯抜けのようにしております。

「データ定義を編集」を押下すると、以下のようになっておりました。





































※プレビューに表示されないので、念のため画像でも張り付けておきます。

これをどのように編集すればよいか教えて頂けると幸いです。
どうぞよろしくお願い致します。

こんにちは

取り急ぎ

name="内容" attr="text"

の部分を

name="内容" attr="innerhtml"

にしてみてもらえますか?

ご連絡頂きましてありがとうございます。

内容部分を「attr=“innerhtml”」に変えてOKを押下したところ、
値が「null」となりましたので、ご連絡いたします。

よろしくお願い致します。

こんにちは

innerHtml属性取れないようですね。
他の方法としては、DataTableでほしいリンクの部分だけを指定してみて、何とかならないか、
あるいはFindChildrenで各セルの情報を取ってくるようなことが考えられるかと思います。

お世話になります。
アドバイス頂きましてありがとうございます。
色々と検討した結果、今回は以下のように進めようと考えました。
※ブラウザはEdgeを使用します。

①ポータルの記事をデータスクレイピングする際に、各記事のURLも一緒に取得しておく。

②そのURLから一つずつ記事を表示させて、画面空欄部分で、
右クリック ⇒ 「ページのソース表示」でHTMLソースを表示させる。

③そのソースをエクセルに保存させ、繰り返し同じ処理をする。

④エクセル上で必要な部分(ファイルのリンク先URL)だけ抽出する。

②で操作する「ページのソース表示」は、「新しいタブ」で右横に表示されてくるのですが、
それを「テキスト取得」アクティビティで取得しようとすると
以下のエラーが表示されます。

image

ブラウザの使い方の話にはなってしまいますが、リンクを新しいウィンドウで開きたいので
あれば、Shiftを押しながらクリックさせる処理にすればよいのですが
今回は、右クリックからのプルダウンメニュークリックとなるため、同様の操作でも
新しいウィンドウで開く事が出来ません。

この辺りの処理をうまくUiPathで制御することは可能でしょうか。
最初の質問の趣旨と変わってしまい恐縮ですが、どうぞよろしくお願い致します。

こんにちは

単にHTMLを取得したいのでしょうか?そうであれば上記のような手順よりは、単に属性取得アクティビティでinnerHtml属性を取って来たほうが良いかと思います。

アドバイス頂きましてありがとうございます。
以下のように、エクセルからURLを取得してブラウザへ貼り付け、innterhtmlでリンク先のHTMLを
取得することが出来ました。
ありがとうございます。

image

また質問が変わってしまって恐縮なのですが、
以下は価格コムのPCランキングのURLをスクレイピングしたものです。

image

このURLを1行づつ読み込ませ、このリンク先のHTML属性を取得する事自体は成功
しております。
しかし処理が終了し、同じエクセルファイルでもう一度テストで動かしてみると
以下のようなエラーが途中で出て処理が止まってしまいます。
※2~3回目の処理で出る事が多いです。

image

その為、もう一度画面上で要素を再指定するとまた正常に取り込めるようになりますが、
再度やると、また途中で止まってしまったり・・・ といった感じです。

こういう場合の要素指定はどのように行えば安定した動作が出来るようになりますでしょうか。
何度も申し訳ございませんが、アドバイス頂けると幸いです。
よろしくお願い致します。

こんにちは

ブラウザコンテナ内のページ遷移にアドレスバーに文字入力するのはよろしくありません。
NavigateToアクティビティを使ってみてください。

Yoichi様

ご返信が滞っておりましたが、頂いた回答を元に
無事、ポータルのデータを全て抜き取ることが出来ました。
今回はたくさんのアドバイス頂きましてありがとうございました。

1 Like