表抽出(テキスト+価格)について

お世話になります。

Web(某ショップサイト)上で、表になっているだろうテキストを抽出することができません。

URLは抽出することができましたが、肝心の商品名(テキスト)と価格を抽出できません。
表抽出でURLと同じように行いましたが、「指定したサンプル要素を使用してパターンを特定できません」とのエラーが出て、これ以上進めることができません。

現在は、URLから一度その商品詳細へ飛んでから情報を拾っていますが、結構時間がかかるので、商品一覧から抽出できればと考えています。

例えば、商品名の要素は

1つ目の商品は

<webctrl tag='MER-ITEM-OBJECT' />
<webctrl shadowhostid='' tag='SPAN' />

2つ目の商品は

<webctrl tag='MER-ITEM-OBJECT' idx='2' />
<webctrl shadowhostid='' tag='SPAN' />

と続いています。

価格であれば、
1つ目は

<webctrl tag='MER-ITEM-OBJECT' />
<webctrl shadowhostid='' tag='MER-PRICE' />
<webctrl aaname='3,900' shadowhostid='' tag='SPAN' />

2つ目は

<webctrl tag='MER-ITEM-OBJECT' idx='2' />
<webctrl shadowhostid='' tag='MER-PRICE' />
<webctrl aaname='1,600' shadowhostid='' tag='SPAN' />

と続いています。

表抽出で何らか原因があってできない場合は、フローチャートでも出来るのかな?と考えています。
何かヒントを頂くことはできませんでしょうか。
よろしくお願いいたします。

こんにちは

某メ〇〇〇かと思いますが、(利用規約の件はおいておいて)技術的な面だけ

DataScrapingがうまく機能しませんので、例えばFindChildrenアクティビティで各要素を
追っていくと取得はできますね。
以下ではMER-ITEM-THMBNAILの要素をまず取っておいて、その中の価格の要素や文言の要素を
同様に取っていけば良いかと思います。

ありがとうございます。

やはり、データスクレイピング対策されているということですね。
それが分かっただけでもとても大きな収穫です。

子要素を探すから教えていただいた通り、試行錯誤しながら試してみましたが、
基礎的な知識が足りず、前に進めておりません。

教えていただいた流れの確認ですが、
1,MER-ITEM-THUMBNAILの要素を取る。
2,上記要素の中にあるMER-ITEM-OBJECTの中にあるaaname(商品名)を取る。
3,テキストを取得で商品名を取得(クリップボードにコピー)
4,エクセルに貼り付け(クリップボードから貼り付け)
5,上記「1、」要素の中にあるMER-ITEM-OBJECTの中にあるMER-PRICEの中にあるaaname(価格)を取る。
6,テキストを取得で商品名を取得(クリップボードにコピー)
7,エクセルに貼り付け(クリップボードから貼り付け)
8,次の商品へ
という流れで認識はあっていますでしょうか?

ご多忙のところすみませんが、よろしくお願いいたします。

こんにちは

1,MER-ITEM-THUMBNAILの要素を取る。
2,上記要素の中にあるMER-ITEM-OBJECTの中にあるaaname(商品名)を取る。

従前にaanameは取れないので、
商品名がとれる場所ならどこでも良いので、もう一度FindChildrenで必要な要素を
抽出すれば良いです。それを用いて後続のGetTextで値を取得できると思います。

3,テキストを取得で商品名を取得(クリップボードにコピー)
4,エクセルに貼り付け(クリップボードから貼り付け)

クリップボードにコピーする必要はありません。変数に格納して、
それを書き込めば良いです。

5,上記「1、」要素の中にあるMER-ITEM-OBJECTの中にあるMER-PRICEの中にあるaaname(価格)を取る。
6,テキストを取得で商品名を取得(クリップボードにコピー)
7,エクセルに貼り付け(クリップボードから貼り付け)
8,次の商品へ

1-4と同じです。

ありがとうございます。

このように試してみましたが、何がエラーになっているのかわかりません。
ご教示いただけませんでしょうか。

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

こんにちは

1のセレクターが任意のブラウザとなっているところは何を設定していますでしょうか?
基本的には取得したい要素をすべて含むような範囲(で最小)のものを指定すると良いかと思います。

1の後の繰り返しのTypeArgumentはUiPath.Core.UiElementを指定してください

2はセレクターは不要で、エレメント(要素)にitemを指定します。(要は1で取得したものの一つを指定することになります)
フィルターは、実際にほしい情報が取得されている要素をフィルターするための条件になります。
現在セレクターに設定されている2行目の内容がそれに該当するように思えます。

3は2の出力を利用します。おそらく対象要素は一つしかないので、
エレメント(要素)にsyohin(0)を指定します。セレクターは不要です。

ありがとうございます。

メッセージボックスが出るところまで出来ました。

ただ、このような暗号が表示されます。

この場合は、②のフィルターに問題があるということになりますか?

要素:item
フィルター:""

にしています。

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

こんにちは

そうですね2が怪しそうですね。

フィルターの設定値がみえませんが、こちらを少しいじるか、
ScopeはDESCENDANTSとChirdrenの両方を試した方が良いかもしれません

ありがとうございます。

DESCENDANTSを試してみましたが、同様の結果でした。

フィルターは以下を入れています。
"<webctrl shadowhostid='' tag='SPAN' />"

こんにちは

いくつか試してみる箇所はあるかもですが
たとえば一番上のFindChildrenの
フィルターを

MER-ITEM-OBJECT

にしてみてどうなるか

あるいは
syouhin
が何個とれているか確認するために
ログなどでsyouhin.Count.ToStringを出力してみる。

あたりからでしょうか

ありがとうございます。

一番上のFindChildrenのフィルターは

"<webctrl/>"

にしていますが、これ以外の例えば、よくわからない現象が起こります。

“<webctrl tag='MER-ITEM-THUMBNAIL’/>”

の場合、

子要素を探す子要素を探す ‘DIV’: セレクターが有効ではありません

と表示され、

"<webctrl tag='MER-ITEM-OBJECT' />”

の場合、
なぜか一瞬で実行が終了します。(エラーも出ずに)

このような状況となっております。
すみません。
よろしくお願いいたします。

こんにちは

これではいらぬものが取れすぎていると思います。
またこのアクティビティのセレクターがどこを指しているかにも依存します。

子要素を探す子要素を探す ‘DIV’: セレクターが有効ではありません

この意味は書式がおかしいという意味のようなのでこのあたり確認が必要かもしれません。
上記も全角半角のシングルクォート、ダブルクォートが混在しているように見えますので、
今一度ただしくすべて半角で入力されてるか確認あるいは再入力した方が良いように思えます。

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