サイト内の文字列4種いずれかの有無チェック(4ライブラリ直列 vs 1ライブラリ vs 1XPath)
「値の取得」の使用感を比べました。
XPathの関数で条件をまとめて設定することで、処理を最も効率化できました。
お裾分けです。
目的
- サイト内の文字列4種いずれかの有無チェック
文字列4種の例
- あああああ
- いいいいい
- ううううう
- えええええ
あり得るパターン
- 1種だけ~4種とも
- ゼロのことも
ソース情報
- Copy XPath://*[@id="category"]/a[1]
- Copy Element、Copy outerHTML:<a href="" class="abc ijk xyz">あああああ</a>
ブラウザ起動(WinActor630、Chrome5X/8X)
- 待機時間1秒
試したバリエーション
- 元の構成
「値の取得」に関数入りのXPathを指定例外処理
値の取得://a[contains(text(),"あああああ")]、変数A
例外処理
値の取得://a[contains(text(),"いいいいい")]、変数A
例外処理
値の取得://a[contains(text(),"ううううう")]、変数A
例外処理
値の取得://a[contains(text(),"えええええ")]、変数A
分岐:変数A 等しい 値⇒・所要時間:4秒台
・所感:ここだけ明らかなもっさり感
・ホンネ:人なら一瞬で識別するのに
・総パーツ数:2×項目数
- XPathを一意に変更
例外処理
値の取得://a[text()="あああああ")]、変数A
例外処理
値の取得://a[text()="いいいいい")]、変数A
例外処理
値の取得://a[text()="ううううう")]、変数A
例外処理
値の取得://a[text()="えええええ")]、変数A・所要時間:1.より気持ち速い
- スクリプトを工夫
「値の取得」改め「値の一括取得」:欄を直列に増設例外処理
値の一括取得
//a[contains(text(),"あああああ")]、変数A
//a[contains(text(),"いいいいい")]、変数A
//a[contains(text(),"ううううう")]、変数A
//a[contains(text(),"えええええ")]、変数A・所要時間:1秒台
・所感:まずまず
・ホンネ:項目数に比例してる感が残り、少しもの足りない
・総パーツ数:2スクリプトの加工方法
https://winactor.com/questions/question/指定xpath一括処理を作ってみた/
https://winactor.com/questions/?q=指定XPathの表の値一括取得を作ってみた
- XPathの関数を集約
「値の取得」1つで、条件を「or」で連結例外処理
値の取得
//a[contains(text(),"あああああ") or contains(text(),"いいいいい") or contains(text(),"ううううう") or contains(text(),"えええええ") ]、変数A・所要時間:1秒未満
・所感:満足
・総パーツ数:2
比較結果を踏まえた方針
- 変数を使い分ける場合は、「値の一括取得」が有利
- 変数が1つで良い場合は、条件を or で連結する等で、XPathをまとめて記述するのが有利
- ヒットするXPathが存在しないケースもあるなら、例外処理で囲う
or 以外に、and や not も、WinActorで使えることをテストで把握済みです。
XPath基礎編(3) ー XPathによく使う関数 – スクレイピングツール | Octoparse
https://helpcenter.octoparse.jp/hc/ja/articles/360012713639--XPath基礎編-3-ー-XPathによく使う関数