BashでHTMLを解析する(grepが不十分な場合)

BashでHTMLを解析する(grepが不十分な場合)

これを行うプログラムがあると確信していますが、見つからないため、これが私を狂わせます。
ちなみに私はARM / Raspberryを使用する予定なので、残念ながらXidel誰かが自分でコンパイルする正しい方向を知らせるのに十分親切でない限り(可能であれば)これはオプションではありません。私もそれを試しましたが、w3mページを別のファイルにダンプしてフォーマットするのが本当に役に立つかどうかはわかりません。しかし、私が間違っていることをもう一度証明してください!

デフォルトでは、https URLを読み、HTMLをBashから簡単にアクセスできるように解析し、最後にデータベースにいくつかの値を保存する必要があります。
を使用してほとんどの作業を簡単に完了しましたが、grep必要なデータが正しい形式でない場合は、詰まります。例をご覧ください。

<h1>Title</h1> #easy to extract Title only with grep | sed

<h1>
Title
</h1> #no way

ここで問題を見ることができます。私が必要とするのは、現在持っている「ランダム」形式の出力ではなく、ページ全体を読み、一連のコンテンツを提供するスクリプトソリューションです。
みんなありがとう

答え1

フィルタファイルを使用します。tidy、各最上位タグを別々の行に配置し、このタイプのスクリプト(Perlなど)に適したものを使用してタグを処理します。 sed変更が非常に簡単な場合に最も便利です。

たとえば、このページの一部(フィルタリング後)は次のようになります(tidy -wrap 4096改行を減らすために使用されます)。

<body class="question-page new-topbar">
<noscript>
<div id="noscript-padding"></div>
</noscript>
<div id="notify-container"></div>
<div id="overlay-header"></div>
<div id="custom-header"></div>
<div class="topbar">
<div class="topbar-wrapper">
<div class="js-topbar-dialog-corral">
<div class="topbar-dialog siteSwitcher-dialog dno">
<div class="header">
<h3><a href="//unix.stackexchange.com">current community</a></h3>
</div>
<div class="modal-content current-site-container">
<ul class="current-site">

タグ"a"などはインラインですが、ページ構造が使いやすくなります。

このページには「ダウンロード」を使用しましたlynx -source。ただし、利用可能なツールはいくつかあり、wgetこのcurl目的でより一般的に使用されます。

答え2

試してみてください子犬。つまり、OSXの場合:

brew install https://raw.githubusercontent.com/EricChiang/pup/master/pup.rb

CSS3セレクタと抽出器を使用してプロパティから値を取得できますhref

関連情報