HTMLのタグ間検索パターン

HTMLのタグ間検索パターン

特定のタイトルを持つタグから値を取得する必要があります。

私にはこのコマンドがあります。

sed -n 's/title="view quote">\(.*\)<\/a>/\1/p' index.html

index.html の一部です。 「人生のすべては幸運です」

<a title="view quote" href="https://www.brainyquote.com/quotes/donald_trump_106578" class="oncl_q">
<img id="qimage_106578" src="./Donald Trump Quotes - BrainyQuote_files/donaldtrump1.jpg" class="bqphtgrid" alt="Everything in life is luck. - Donald Trump">
</a>
</div>
<a href="https://www.brainyquote.com/quotes/donald_trump_106578" class="b-qt qt_106578 oncl_q" title="view quote">Everything in life is luck.</a>
<a href="https://www.brainyquote.com/quotes/donald_trump_106578" class="bq-aut qa_106578 oncl_a" title="view author">Donald Trump</a>
</div>
<div class="qbn-box">
<div class="sh-cont">
<a href="https://www.brainyquote.com/share/fb/106578" aria-label="Share this quote on Facebook" class="sh-fb sh-grey" target="_blank" rel="nofollow"><img src="./Donald Trump Quotes - BrainyQuote_files/facebook-f.svg" alt="Share on Facebook" class="bq-fa"></a><a href="https://www.brainyquote.com/share/tw/106578?ti=Donald+Trump+Quotes" aria-label="Share this quote on Twitter" class="sh-tw sh-grey" target="_blank" rel="nofollow"><img src="./Donald Trump Quotes - BrainyQuote_files/twitter.svg" alt="Share on Twitter" class="bq-fa"></a><a href="https://www.brainyquote.com/share/li/106578?ti=Donald+Trump+Quotes+-+BrainyQuote" aria-label="Share this quote on LinkedIn" class="sh-tw sh-grey" target="_blank" rel="nofollow"><img src="./Donald Trump Quotes - BrainyQuote_files/linkedin-in.svg" alt="Share on LinkedIn" class="bq-fa"></a>
</div>
</div>
<div class="qll-dsk-kw-box">
<div class="kw-box">
<a href="https://www.brainyquote.com/topics/life-quotes" class="qkw-btn btn btn-xs oncl_klc" data-idx="0">Life</a>
<a href="https://www.brainyquote.com/topics/luck-quotes" class="qkw-btn btn btn-xs oncl_klc" data-idx="1">Luck</a>
<a href="https://www.brainyquote.com/topics/everything-quotes" class="qkw-btn btn btn-xs oncl_klc" data-idx="2">Everything</a>
</div>
</div>
</div>
<div id="qpos_1_2" class="m-brick grid-item boxy bqQt r-width" style="position: absolute; left: 623px; top: 2px;">
<div class="clearfix">
<div class="qti-listm">
<a title="view quote" href="https://www.brainyquote.com/quotes/donald_trump_119339" class="oncl_q">
<img id="qimage_119339" src="./Donald Trump Quotes - BrainyQuote_files/donaldtrump1(1).jpg" class="bqphtgrid" alt="The first thing the secretary types is the boss. - Donald Trump">
</a>
</div>
<a href="https://www.brainyquote.com/quotes/donald_trump_119339" class="b-qt qt_119339 oncl_q" title="view quote">The first thing the secretary types is the boss.</a>
<a href="https://www.brainyquote.com/quotes/donald_trump_119339" class="bq-aut qa_119339 oncl_a" title="view author">Donald Trump</a>
</div>
<div class="qbn-box">
<div class="sh-cont">
<a href="https://www.brainyquote.com/share/fb/119339" aria-label="Share this quote on Facebook" class="sh-fb sh-grey" target="_blank" rel="nofollow"><img src="./Donald Trump Quotes - BrainyQuote_files/facebook-f.svg" alt="Share on Facebook" class="bq-fa"></a><a href="https://www.brainyquote.com/share/tw/119339?ti=Donald+Trump+Quotes" aria-label="Share this quote on Twitter" class="sh-tw sh-grey" target="_blank" rel="nofollow"><img src="./Donald Trump Quotes - BrainyQuote_files/twitter.svg" alt="Share on Twitter" class="bq-fa"></a><a href="https://www.brainyquote.com/share/li/119339?ti=Donald+Trump+Quotes+-+BrainyQuote" aria-label="Share this quote on LinkedIn" class="sh-tw sh-grey" target="_blank" rel="nofollow"><img src="./Donald Trump Quotes - BrainyQuote_files/linkedin-in.svg" alt="Share on LinkedIn" class="bq-fa"></a>
</div>
</div>

Bashで配列を埋めるには、このすべての値が必要です。ここで予想される出力は['人生のすべては幸運である''、'秘書が最初に入るのは上司である。 ']。ただし、index.htmlにはすべての引用符が必要なため、すべての引用符を配列にインポートするにはセレクタが必要です。

ベストアンサー1

HTMLであり、適切なXMLでなくても、実際にはxmlstarlet

ファイルを呼び出してみましょうindex.html。コマンド呼び出し:

xmlstarlet fo -H index.html 2>/dev/null |
    xmlstarlet sel -t -v '//a[@title="view quote" and string-length(text()) > 1]' -n 2>/dev/null

出力:

Everything in life is luck.
The first thing the secretary types is the boss.

あなたは以前それを経験していなかったかもしれませんxmlstarlet。 XML形式を指定、編集、解析できる素晴らしいツールです。今日、私はこれが間違ったHTML形式を再指定する可能性があることを発見しました。それ以外の場合はインストールしてください。 (インストール権限がない場合はお問い合わせください。)処理を開始できない方法でsedXMLを理解してくださいawk。 XMLを再フォーマットしますか?壊れる可能性が高いですが、sed大きな違いは見られません。awkxmlstarlet

おすすめ記事