0

私はbashスクリプトを持っています:

v1='value="'
v2='" type'

do_parse_html_file() {
   sed -n "s/.*${v1}//;s/${v2}.*//p" "${_SCRIPT_PATH}/IBlockListLists.html"|egrep '^http' >${_tmp_file}
}

...これはhtmlファイルからURLのみを抽出しています。私は出力にしたいと思います:

somename URL
somename URL

---入力HTMLファイルの例は次のようになります。

</tr>
<tr class="alt01">
<td><b><a href="http://www.iblocklist.com/list.php?list=bcoepfyewziejvcqyhqo">iana-reserved</a></b></td>
<td>Bluetack</td>
<td><img style="border:0;" src="I-BlockList%20%7C%20Lists_files/star_4.png" alt="" height="15" width="75"></td>
<td><input style="width:200px; outline:none; border-style:solid; border-width:1px; border-color:#ccc;" id="bcoepfyewziejvcqyhqo" readonly="readonly" onclick="select_text('bcoepfyewziejvcqyhqo');" value="http://list.iblocklist.com/?list=bcoepfyewziejvcqyhqo&amp;fileformat=p2p&amp;archiveformat=gz" type="text"></td>
</tr>
<tr class="alt02">
<td><b><a href="http://www.iblocklist.com/list.php?list=cslpybexmxyuacbyuvib">iana-private</a></b></td>
<td>Bluetack</td>
<td><img style="border:0;" src="I-BlockList%20%7C%20Lists_files/star_4.png" alt="" height="15" width="75"></td>
<td><input style="width:200px; outline:none; border-style:solid; border-width:1px; border-color:#ccc;" id="cslpybexmxyuacbyuvib" readonly="readonly" onclick="select_text('cslpybexmxyuacbyuvib');" value="http://list.iblocklist.com/?list=cslpybexmxyuacbyuvib&amp;fileformat=p2p&amp;archiveformat=gz" type="text"></td>
</tr>

---結果は次のようになります。

iana-予約済みhttp://list.iblocklist.com/?list=bcoepfyewziejvcqyhqo&fileformat=p2p&archiveformat=gziana-privatehttp://list.iblocklist.com/?list=cslpybexmxyuacbyuvib&fileformat=p2p&archiveformat=gz

--- sed on one lineコマンドでそれを取得することは可能ですか?もしそうなら、助けてください。

リストの最初の部分-「somename」は常に最初にあり、次のURLが続く/次の行である必要はありません/行である必要はありません。

>somename   ... is delimited by   'href="URL">'   and   '</a>'       on one line           
>URL ... is always delimited by   'value="'       and   '" type'     on any following line 

よろしくお願いします

M。

4

3 に答える 3

2

私のclihtmlパーサーXidelでは、これは1行です。

xidel "${_SCRIPT_PATH}/IBlockListLists.html" -e '//a/concat(., " ", @href)'
于 2013-02-19T22:30:12.160 に答える
1

はこれを行うための適切なツールではありません。

HTMLパーサーを使用して、またはruby、、も)でそれを行うためのスクリプトをいくつか紹介できます。これらは、この仕事に適したツールです。javaphp

これは、おそらくこの Web サイトで最も議論されている質問です。この優れた投稿を参照してください。

このウェブサイトを作っている男の一人がこれも書いた

于 2013-02-19T20:36:41.533 に答える
0

パーサーを使用します。それらの多くがあります。ここでは を使用した例を示しHTML::TokeParserます。

の内容script.pl:

#!/usr/bin/env perl

use warnings;
use strict;
use HTML::TokeParser;

my $p = HTML::TokeParser->new( shift ) || die;

while ( my $tag = $p->get_tag( 'a' ) ) { 
    printf qq|%s %s\n|, $p->get_text, $tag->[1]{href};
}

次のように実行します。

perl-5.14.2 script.pl htmlfile

それは以下をもたらします:

iana-reserved http://www.iblocklist.com/list.php?list=bcoepfyewziejvcqyhqo
iana-private http://www.iblocklist.com/list.php?list=cslpybexmxyuacbyuvib
于 2013-02-19T20:54:44.163 に答える