Webページ(html)の一部のリストを「解析」したいです。 「解析」するには、<title> </title>
タグ間のコンテンツを特定のファイルにリダイレクトするだけです。まずfor
、ループを使用してwget
から(time
もちろん)curl
このケースがより速いという結論を下します。
だからそれは次のようになります:
for page in $(cat source.txt)
do
echo "$(curl -s https://somewebpage/some_sub_page/$page \
| grep '<title>' -A2 | sed -n '2p')" > tmp/$page/index
done
これらすべてのサブページには、<title>
以下のように私が興味を持っている情報が含まれています。
<title>
...
</title>
そのため、結果を得るために一般的なシェルツールを適用しました。私の問題は何ですか?約400ページなので、ページ全体を読み込んだ後にページをgrep
読み込むなどの作業には時間がかかります。 HTMLドキュメントの最初の10行だけをロードするなど、より複雑なロードソリューションはありますか?私は古典的なbashユーティリティ(curl、wget)を使用していますが、この問題に適していると思われるユーティリティをお勧めします。
UPD:たぶんこれは完璧な解決策ではないかもしれませんが、head
スクリプトを2回減らした後に追加されました。 (コピー)curl
time
ベストアンサー1
正しい方法で試してください。道表現する:
注文する:
saxon-lint --html --xpath '//title/text()' http://domain.tld/path
確認するサクソンリント(自己プロジェクト)
あなたはテストすることができますxmllinthttps
(ただし、ほとんどの場合、HTMLパーサーはSTDERRを非表示にする必要があり、これはサポートされていません。それ以前に作成したコマンドと同じくらい良いです)
xmllint --html --xpath '//title/text()' http://domain.tld/path 2>/dev/null
ついに:
for page in $(cat source.txt); do
chosen_command "https://somewebpage/some_sub_page/$page" > "/tmp/$page/index"
done