0
subway scheduleページに表示されるデータ(行、宛先、時刻、および位置)を取得したいとします。bashスクリプトでhtmlからデータを抽出する
私は今のために書いたコードは次のとおりです。
#!/bin/bash
curl "http://mon.ruter.no/SisMonitor/Refresh?stopid=3010370&computerid=acba4167-b79f-4f8f-98a6-55340b1cddb3&isOnLeftSide=true&blocks=&rows=6&test=&stopPoint=">ruter.html
awk -F "</*td>|</*tr>" '/<\/*t[rd]>.*[A-Z][0-9]/ {print $3, $5, $8, $10 }' ruter.html
:。 awkの-F "*td> |*tr>"「/ <\/*t[rd]> */{print $ 1、$ 2、$ 4、$ 5} 'ruter1.htmlのような結果を出しました:Bergkrystallen via Majorstuen Ringo via Storo 1分
また、Pro = 1またはPro = 2の1行(最初の地下鉄時間)だけを印刷したいと思っています(たとえば./subwayコマンドを実行すると、コマンドラインのフラグに従います)。 sh -W、それはplatform1の最新の地下鉄の時刻を与えるか、または./subway.sh -Eというコマンドを与えるとplatform2の最新の地下鉄の時刻を与える) –
答えて
Don't use regular expressions for this at all. HTMLからXMLへの変換、およびXPathを使う - 単なるテキストマッチとは反対に、文書のセマンティクスに働くクエリ言語:
与えられた入力HTMLの場合、今日のように、出力は次のようになります。
ここで使用されるツールは、(対応XHTMLに厄介なHTMLに変換するため)
$'\t'
シンタックスでは、使用中のシェルが実際にbashになる必要があることに注意してください。(/bin/sh
ではない)。links
で出典
2016-09-06 17:44:11
ありがとう!しかし、私はあなたが何かをインストールする必要があります結果を得ていない書き込み、私は試してみましたか?もう1つの問題は、Pro = 1またはPro = 2の1行(最新のもの)だけを印刷する必要があるということです(たとえばコマンドラインにフラグに従って./subway.sh -Wまたは./subway.sh -E) –
あなたはtidyとxmlstarletがインストールされている必要があります。どちらか一方がインストールされていない場合は、stderrに自明のエラーがあります。特定のプラットフォームのフィルタリングに関しては、適切に '-m" // h:tr [h:td [5] = '1'] "または" 2 "にすることができます。 –
:
出力:私のように、awkの一部に、このコードに少し変更でした
出典
2016-09-06 17:52:30 Cyrus
Niiiice。これは私が忘れてしまったツールです。 –
または 'lynx -dump'です。 –
Cyrus
リンクはもっと活発に維持されていませんか? lynxの印象は、それが基本的に10年以上前の死んだプロジェクトであったということでした。 –
関連する問題