从html文件中提取超链接URL的shell脚本

sed -'/<a /p' html.txt | sed 's#<a \([^>]*\)>#--SYN--\1--FIN--#g; s/<//g; s/>//g' | \
sed 's/--SYN--/</g; s/--FIN--[^<]*</></g; s/[^<]*</</; s/--FIN--.*/>/;' | \
sed "s#<[^>]*href=\([^a-zA-Z>]*http://[^ >]*\)[^>]*># @\1@#g; s/<[^>]*>//g; s/'//g; s/@/ /g" > url.txt


这里提取的是 <a href="http://domain/path/to/html.html"> 中的 http://domain/path/to/html.html
也就是
1、只匹配html的Tag为a的节点。
2、选择的是href的值。
3、href的值需要使用http://开头,就是说不支持相对路径。

写成sed脚本可以表示为:

# this script is use to dig href url from html file
s/<a \([^>]*\)>/--SYN--\1--FIN--/g;
s/[><]//g;
s/--FIN--/>/g;
s/--SYN--/</g;
s/^\(.*\)$/>\1</;
s/>[^<]*</></g;
s#<[^>]*href=[^a-zA-Z>]*\(http://[^ >]*\)[^>]*>#@\1@#g;
s/<[^>]*>//g;
s/@@/\
/g;
s/[><
'"@]//g;

/^ *$/d;


sed脚本2:

:a;
h;
s@^[^<]*<a\s*[^>]*\s*href\s*=\s*['"]*\(http://[^> "']*\)[^>]*>.*@\1@p;
g;
s@<[a-zA-Z/][a-zA-Z]*[^>]*>@@;
t a;
/<[a-zA-Z\/][a-zA-Z]*[^>]*$/{N; b a; };
d;










本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1612987,如需转载请自行联系原作者
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值