FindChildrenのフィルタで複数行にわたるセレクターを指定する方法

初めての投稿になります。情報に不足があればご指摘頂けますと幸いです。

やりたいこと:
chromeで特定のサイトのスクレイピングをしたい

詳細:
サイトの各ページには"投稿"(※画像で言うところのHoge)のような要素が複数表示されており、それぞれをまず子要素として抽出し、それを「繰り返し(コレクションの各要素)」で、さらにそれぞれの要素から"投稿内容"や"投稿日時"(※画像で言うところのHoge1やHoge2)をテキストで取得し、DataTableに格納して、CSVなどで出力するイメージです。

困っていること:
画像の青枠の部分を取得するときの指定がうまくできず悩んでおります。
今は繰り返しの中でFindChildrenを行い、ターゲットにHogeの各要素(item)を指定し、フィルターで取り出そうとしています。

その際、例えばHoge1であれば、

"<webctrl tag='div' class='Hoge1' />"

でうまく取得できることを確認しています。

青枠を取得するために、フィルターに以下のような設定をしています。

"<webctrl tag='div' class='Hoge1 />
<webctrl tag='div' />
<webctrl tag='span' idx='2' />"

このフィルターの設定でうまくいくと思ったのですが、実行してみると以下のようなエラーが表示されます。

子要素を探す ‘DIV’: セレクター、フィルター、およびスコープの指定した組み合わせは、サポートされていません。

改行が原因かと思い、以下のようにしてみたのですが、結果は同じでした。

"<webctrl tag='div' class='Hoge1 />" + Environment.NewLine+
"<webctrl tag='div' />" + Environment.NewLine +
"<webctrl tag='span' idx='2' />"

どうやらフィルターを複数行にしてしまったのが良くなかったのではないかと思っているのですが、原因がお分かりになる方はいらっしゃいますでしょうか…。

また、複数行にしてしまったのが原因な場合は、FindChildrenを3回繰り返すことで実装自体は出来ると思うのですが、他に効率の良い取得方法があればご教示頂けますと幸いです。

実行環境:

Studio 2021.10.4 - 2021/12/06
Enterprise License
サービス モードのインストール

ライセンス プロバイダー: Orchestrator
アクティベーション ID:

Microsoft Windows 10 Pro 64 ビット
5.0.12

よろしくお願いします。

1 Like

おい @ksan

このためにデータスクレイピングを試していただけませんか?

FindChildrenと比較するとかなり簡単です。

ありがとう
#nK

ありがとうございます。

説明不足だったのですが、先にデータスクレイピングを試してはおりました。
ただ各要素の指定がうまくいかず、今回の取得のような方法を検討しております…。

こんにちは

おそらく複数行をサポートしていないことが原因かと思います。
対象となる要素に特徴的な属性があれば、それを元に抽出可能と思いますが、
なければ、上から段階的に取得する方法になるかと思います。

もし可能であれば、対象要素のUiExploereでの取得可能属性を共有いただけると良いかもしれません。
あるいはクラシックのDataScrapingWizardでしたらある程度のチューニングも可能ですので、そちらが未なら試してみても良いかもしれません。

1 Like

やはりそういうことですね…。

上記で解決することができました!
ありがとうございます。

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