Chrome値の取得で両階層の別idに対応
Chromeで「値の取得」にかなりハマりました。
助けてください!のつもりが、質問を書き出す中でクリアできちゃいました。
答えは目の前にありました。
せっかくなので、気づきを含めてお裾分けです。
★が答えです。
状況
- 同じ位置に、どちらかのパターンのtdが表示される
<td><span id="a">あ<span></td>
<td id="b"><span>い</span></td>
- 以前の状況
<td id="c">う</td>
やりたいこと
- 「あ」か「い」を取得したい
ハードル
- いくつかリファレンスを当たってみたものの、「or」の利用例は同じ階層の要素ばかり、、
XPathとは?基本概念や書き方をわかりやすく解説! | Octoparse
https://www.octoparse.jp/blog/xpath-introduction/#h_d669da4f-ecd1-4e53-8045-b33301d785c8III. XPathによく使う関数
3. and/not/or:複数の条件が含まれている要素を指定する
- 仕様書も覗いてはみたものの、、
妥協案
- それぞれ取得できるので、こうするつもりだった
例外処理
正常系
値の取得://td[@id="a"]、取得値
異常系
値の取得://span[@id="b"]、取得値
- XPathの1表現が最速と思い込んでいるため、少し心残り
https://winactor.com/questions/question/サイト内の文字列4種いずれかの有無チェック(4ラ/
- 実際は僅かな差かもしれないものの、美しくないと感じてしまう
- どちらのパターンでも、XPathでガバっとひと掴みにしたい
採用したXPath★
//*[@id="a" or @id="b"]
クリア後の所感
- Chromeでid要素起点のXPathが取得されるときのアスタリスクで氷解
- 曖昧さを排除したくて、原則的にタグに書き換えて使ってきた
- 今回はこの方針が目隠しとなって、目の前にあるアスタリスクが見えていなかった
- 灯台下暗し
- ハードルにぶち当たったときこそ、キホンに立ち返る大切さ
- 書き出してみる効果
- 少し遠回りして時間を無駄にしたけど、良い教訓になった
- ※ タグは後続処理でまるっと削除しているので、「値の取得」で一緒に取得されること自体は何ら問題ない
HTMLタグの削除に使っている正規表現
<(".*?"|'.*?'|[^'"])*?>
環境
WinActor630
anothersolution 質問の投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。
新規登録