XPathを実行アクティビティのプロパティについて

添付2 キャプチャ

UiPath初心者です。
Webスクレイピングの勉強のため、Excelから出発駅と到着駅を読み込み、Yahoo!路線情報で最安の6か月通勤定期代を調べ、ExcelのF列に書き込むワークフローを作成中です。(Excelフォーマットは2番目の画像)
Webに表示された6か月通勤定期代を変数「定期代」に取得するために、XPathを実行アクティビティを使ってみました。
2番目の添付画像のように、

XML文字列--->"43,960円"

XPath式--->"//*[@id="“route01"”]/dl/dd[2]/div[1]/dl/dd/ul/li[3]/span"

を設定し、型変換して、メッセージボックスで変数「定期代」の内容を表示したら、3番目の添付画像のような変な値が表示されました。
本来であれば、XML文字列やXPath式が差し示している 43,960円 が表示されることを期待していたのですが。
何がまずいのでしょうか?

こんにちは

直接の原因は、(おそらくobject型であろう)定期代をそのまま文字列出力しようとしていることにあります。
結果プロパティは

img20201224-6

のように、いくつかの型となる可能性が示唆されていますが、今回の場合
IEnumerable<T>として格納されています。そのため、
CType(定期代,IEnumerable(Of Object))のように変換した上で、
ForEach(繰り返し)で各要素を取り出してあげる必要があります。

ちなみにXML文字列は、XPathを評価するXML文字列を格納する必要がありますので、
このままですと結果はおそらく空になると思います。

>ちなみにXML文字列は、XPathを評価するXML文字列を格納する必要がありますので、
このままですと結果はおそらく空になると思います。
このサイトの問題でなぜか一部の文字列が表示されません。
XML文字列--->かっこspanかっこ43,960円かっこ/spanかっこ
でよろしいでしょうか?

こんにちは

状況が良く把握できませんが、XML文字列プロパティは、XPathを適用する元のXML(文字列)です。
結果を記載するのであれば、そもそもXPathでの抽出自体が不要になるかと思います。

目的を再度ご説明します。目的はWebに表示された6か月通勤定期代を変数「定期代」にStringで取得することです。
WinAtorのシナリオ開発の経験から、XPathを実行アクティビティで、該当するXPathを指定すれば変数に、定期代が取得できると推定しました。
XML文字列はプロパティ設定に必要だからやっているだけで、その結果どうなるかは興味ありません。もちろんおっしゃる通り、XML文字列かっこspanかっこ43,960円かっこ</かっこをそのまま変数定期代に取得できても構いません。どうすればできますでしょうか?

こんにちは

サイトを確認しましたが、Yahoo路線が出力するhtmlは正規のXMLではありませんので、
厳密なXMLを処理するこれらのアクティビティでの処理には向いていないと思います。

ブラウザ側のXPath実装をつかうと良いと思いますので、Inject JS Scriptアクティビティでの
例を添付します。

Sequence.xaml (8.2 KB)

すみません、ブラウザの制御がおかしかったので、サンプル差し替えました。

ありがとうございます。XPathを実行アクティビティは結局テキストに出力難しいんですね。。。どうして、アクティビティを難しく作るんだろう。理解できません。

こんにちは

XPathは本来XML文書に対する特定ノードの指定等に利用するためのものです。

そのため、今回の対象サイトのようにHTML構造がXMLに準拠していない文書に対して、
操作ができないことは、ある意味当然の振る舞いといえます。すでに廃止になっていますが
XHTML準拠のHTML文書や、RSS/ATOM等のフィードは厳密なXMLになっていますので、
問題なく処理できると思います。

一方でブラウザのXPath実装系はXMLのみならずHTMLにも対応しているケースが多いです。
以下はMozilla (Firefox)のページですが、HTMLにも対応していることが明記されています。

そのため、このあたりは各実装系の仕様を把握した上で、ニーズに応じて使い分けをする必要があるということになります。

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