Webスクレイピングで内部的な値を取得したい

Edgeで開いたWebページ内の表を取得すると、取得方法により値が異なる場合があります。

①Webスクレイピング・・・見た目の値
②GetValueアクティビティ・・・内部的な値

理由はわかりませんが内部的な値をそのまま表示せず、文字列置換などで見た目の値が少し変わるように情シス側が操作しているようです。

Webスクレイピングでも内部的な値を取得することはできますでしょうか?
今わかっているのは約10列中の1列のみですので、①のあと、②でその1列のみ値を上書きする、ようにしようかと思っていますが、そもそも①で内部的な値を取得する方法や、ほかの案がありましたらご教示いただけますでしょうか。

どうぞよろしくお願いいたします。

こんにちは

クラシックとモダンどちらのスクレイピングを使用していますでしょうか?
クラシックのDataスクレイピングの場合、設定により取得する値を変更できる余地が多少ありますのでそちらを試す手はあるかもしれません。
モダンの表抽出の場合は、このあたりの設定変更が難しいので、あるいは表抽出の代わりにForEachUiElementを使って、各UI要素に対してGetTextしたほうが良いかもしれません。

いつもありがとうございます。
たぶんクラシックだと思います!

クラシックでしたら下記の通りWIzardの途中で設定情報を変更できるので
下図左側のXMLを変更することにより、取得できる場合があります。

1 Like

ありがとうございます!
明日試してみます!

逆に、

②GetValueアクティビティ・・・内部的な値

上記のGetValueで、見た目の値を取得する方法はありますでしょうか?
ソースをこちらに張り付けることができず申し訳ございませんが、
UI Explororで見ると、innertextなどもすべて内部的な値となっており、私の方では解決方法が見つかりませんでした。

人が画面の値部分を選択してコピーすると、見た目の値が取得されます。。

こんにちは

クラシックのGetTextの場合、取得対象(セレクター)以外の設定変更の余地は無いので、他の手段を検討する必要があるかと思います。

例えばGrtFullTextを使ってみるやGetAttributeを使う等が考えられます。
いずれにしましても、対象の構造次第かと思います。

1 Like

なるほど、ありがとうございます!
明日それもあわせてチャレンジしてみたいと思います!

下記を試しましたが、残念ながらうまくいきませんでした・・( ノД`)

①スクレイピングで内部的な値を取得する
スクレイピングを作り直し、「データ定義を編集」
→<extract-table get_columns_name"1" ・・・・>を加工してみましたが、どう加工すればよいのかわからず・・・

②Getvalueで見た目の値を取得する
属性を取得・・・どの属性も内部的な値でした
GetFullText・・・GetValueと同じ結果でした

①の加工方法について、可能でしたらアドバイスをいただけますと助かります。
どうぞよろしくお願いいたします。

こんにちは

スクリーンショットや当該箇所のHTMLソース等共有できないでしょうか?
基本的には、手さぐりよりは、構造を理解して、それに沿った形でアプローチしたほうが良いかと思います。

おっしゃる通りでございます。ですが、ちょっと困難です。

邪道な方法かもしれませんが、
スクレイピングで全体を取得した後に、該当の列のみGetValueなどで取得しなおす方向で進めたいと思います。
これなら私でもできそうな・・・

こんにちは

代替のアプローチとして
もしモダンのアクティビティが使えるなら、ForEachUiElementアクティビティを使うと、もう少し楽にGetTextできるかと思います。(あるいはCurrentElement_Lableが直接使える可能性もあります)

クラシックの場合はFindChildrenになりますが、フィルターの設定が少々難しめになります。

1 Like

ありがとうございます。
GetValueでセレクタにrowと列を指定して、行数分繰り返そうと思います。
そうすると「子要素を取得」を使わなくてもいけそうです。
(子要素を取得を使用した方がよいでしょうか?)

パフォーマンス的には子要素を取得の方が良さそうですが、tableRowを動的に指定する方法でも問題ないと思います。

1 Like

承知いたしました。
「子要素を取得」を使ったことがないため、取り急ぎGetValueを使ってしまいました。
勉強しておきたいと思います。ありがとうございました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.