1

多数のエントリ、一部の.com.usなどを含むファイルから.co.ukURLを抽出する必要があります。必要なのは.co.ukのものだけです。それを行う方法はありますか?pd:im Learningbash

編集:

コードサンプル:

<a href="http://www.mysite.co.uk/" target="_blank">32</a>
<tr><td id="Table_td" align="center"><a href="http://www.ultraguia.co.uk/motets.php?pg=2" target="_blank">23</a><a name="23"></a></td><td id="Table_td"><input type="text" value="http://www.ultraguia.co.uk/motets.php?pg=2" size="57" readonly="true" style="border: none"></td>

いくつかの繰り返しに注意してください

重要:壊れているか404もあるすべてのリンクが必要です

ネットのどこかでこのコードを見つけました:

cat file.html | tr " " "\n" | grep .co.uk

出力:

href="http://www.domain1.co.uk/"
value="http://www.domain1.co.uk/"
href="http://www.domain2.co.uk/"
value="http://www.domain2.co.uk/"

近いと思う

ありがとう!

4

3 に答える 3

0

まだ答えがないので、醜いが頑強な解決策を提供することができます。このコマンドを利用してwget、ファイル内のURLを取得できます。通常wgetは、これらのURLからダウンロードするために使用されますが、wgetDNSを介したルックアップの時間を拒否することにより、何も解決せず、URLを出力するだけです。次に、.co.ukが含まれているURLをgrepできます。全体の話は次のようになります。

wget --force-html --input-file=yourFile.html --dns-timeout=0.001 --bind-address=127.0.0.1 2>&1 | grep -e "^\-\-.*\\.co\\.uk/.*"

各行の残りのタイムスタンプ情報を削除したい場合は、のsedように、出力をパイプでつなぐことができます| sed 's/.*-- //'

お持ちでない場合は、こちらでwget入手できます

于 2012-06-25T13:24:40.733 に答える
0

使用する1つの方法awk

awk -F "[ \"]" '{ for (i = 1; i<=NF; i++) if ($i ~ /\.co\.uk/) print $i }' file.html

出力:

http://www.mysite.co.uk/
http://www.ultraguia.co.uk/motets.php?pg=2
http://www.ultraguia.co.uk/motets.php?pg=2

一意のURLのみに関心がある場合は、出力をにパイプしますsort -u

HTH

于 2012-06-26T00:07:39.363 に答える
0

次のアプローチでは、実際のHTMLエンジンを使用してHTMLを解析するため、CDATAセクションや解析が難しいその他の構文に直面した場合の信頼性が高くなります。

links -dump http://www.google.co.uk/ -html-numbered-links 1 -anonymous \
  | tac \
  | sed -e '/^Links:/,$ d' \
        -e 's/[0-9]\+.[[:space:]]//' \
  | grep '^http://[^/]\+[.]co[.]uk'

次のように機能します。

  • links(テキストベースのWebブラウザ)は実際にサイトを取得します。
    • を使用する-dumpと、レンダリングされたページがstdoutに出力されます。
    • リクエストを使用-html-numbered-linksして、リンクの番号付きテーブル。
    • セキュリティを強化するために、デフォルトで微調整を使用し-anonymousます。
  • tac行順リストのリンクからの出力を逆にします
  • sed -e '/^Links:/,$ d'リンクのテーブルの後(反転前、前)のすべてを削除し、実際のページコンテンツが誤って解析されないようにします
  • sed -e 's/[0-9]\+.[[:space:]]//'個々のリンクから番号付きの見出しを削除します。
  • grep '^https\?://[^/]\+[.]co[.]uk'ホスト部分がで終わるリンクのみを検索し.co.ukます。
于 2012-06-26T00:28:40.773 に答える