0

※ タイトルを変更

旧タイトル:ChromeのシナリオでtableのouterHTMLを取得したい

 

Ver.7.2系でtableのouterHTMLを「値の取得」したいです。
Chromeです。
お知恵を拝借させてください。
経緯と思考回路をつらつらと書き出してみました。
目的ベースで「要するにこうなればいいんでしょ」な別案とかでも構いません。

 

テーブルA

  • 「テーブルスクレイピング」で一瞬でCSVに落とせた

 

テーブルB

  • 「テーブルスクレイピング」だと、td内の地のテキストしか取得されない
  • td > span > textareaのテキストも取得したい
  • 「値の取得」だとtableタグの内側しか取得されない
  • tableタグごと掴めれば、Excelに貼り付けることで、td > span > textareaのテキストのテキストもそれなりに表示される
  • 貼り付けフローは面倒そう、、見栄えも気になる、、ホントはもっとスマートに攻めたい、、
  • とりあえず目指す方向性の1つとして、テーブルの開始終了タグを含めて「値の取得」したい
  • 「文字列の連結(nつ)」で前後に<table></table>を繋げば良い話ではある
  • せっかくなので、ぴったりなXPathを見出したい
  • 実はカンタンなことなのかも

 

後続処理での用途

  • 1件1レコードのCSVに出力している
  • 1レコードをExcel2013製のカード型レイアウトに反映して、目視が必要な箇所だけを人がチェックする
  • ここまでは概ね理想通り
  • 今回、2か所のtableはそのままの表で見たいという現場ニーズに対応するもの
  • tableを1セル毎に変数に取得してレコード内にブチ込むと、まあまあ煩雑
  • セル内は自然文で、文字数が際限なく、行数が一定でない
  • 2か所のtableは別シートに表示することを検討中
  • レコードと同期してtableを順送りするしくみも別途考えねば、、

 

調べたこと

  • このへんの「コンテキストノード自身」、.(ドット)、Selfが該当しそう

XPath チートシート
http://aoproj.web.fc2.com/xpath/XPath_cheatsheets_v2.pdf

3. ロケーションパス (2) 1 | TECHSCORE(テックスコア)
https://www.techscore.com/tech/XML/XPath/XPath3/xpath03

XPathについての概略
https://www.takamagahara.info/2006/0104.htm

 

試したこと

  • 目的の画面では、これらは同じ結果だった

//table[@class="aaa"]

//table[@class="aaa"]/ancestor-or-self::table

//table[@class="aaa"]/.

  • 慣れない表記に挑んだものの、ここごとく玉砕、、
  • 悔しいことに、目的のtableをすっぽり囲むdivとかがない

//table[@class="aaa"]/..

  • 目的のtableがすっぽり入ってるけど、直前のJavaScriptと直後のtableも取得されちゃう
  • ここから正規表現で不要な部分をまとめてカット、タグを置き換えてCSVに整形するのが無難か

 

ひとまず手が届く範囲で良さげなしくみを作り始めているものの、なるべくカッコ良くてスピーディーでカンタンなものに仕上げたいです。

この質問は解決済みのためクローズされています。
anothersolution ベストアンサーとして選択しました
回答とコメントは、会員登録(無料)で閲覧できるようになります。