免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5154 | 回复: 10
打印 上一主题 下一主题

怎样获取HTML中的URL [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-19 13:59 |只看该作者 |倒序浏览
input:
<a href="http://test1/" target="_blank">TEST_ONE</a><tr>foo</tr>
<a href="http://test2/index.asp?id=xxx"
target="_blank">TEST_TWO</a><div>foo</div>
<a href="http://10.1.1.10/" target="_blank">
<font color="red">TEST_DEC</font></a>
<a href="http://10.1.1.10:8080/" target="_blank">TEST_PORT</a>

output:
http://test1.com/                 TEST_ONE
http://test2.com/index.asp?id=xxx                 TEST_TWO
http://10.1.1.10/                 TEST_DEC
http://10.1.1.10:8080/        TEST_PORT

用awk应该怎么实现呢,特别是第二行,断开的anchor怎么处理~?谢谢~

[ 本帖最后由 wesouler 于 2009-2-19 14:24 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-02-19 14:20 |只看该作者
感觉(">).*(</a)把http分离出来,再用^(http(s?)\:\/\/|~/|/)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?/?(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?提取。可是,这个两行的后面的名字怎么弄?

[ 本帖最后由 wesouler 于 2009-2-19 14:33 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-02-19 14:43 |只看该作者
awk -v RS="</a>" '$1=$1{print $0"</a>"}' file|perl -p -e 'my($href,$word)=m/<a href="(.+?)".*>([^\s]+?)<.*/;$_="$href $word\n";'
不知道sed里的正则有没有“非贪婪”这一项,所以用了PERL里的正则,请参考

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
4 [报告]
发表于 2009-02-19 15:05 |只看该作者

回复 #1 wesouler 的帖子

sed -r ':a;/<\/a>/!{N;s/\n//;ba};s/.*href="([^"]+)".*>(TEST[^<]+)<.*/\1 \2/' urfile

[ 本帖最后由 ly5066113 于 2009-2-19 15:12 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-02-19 15:07 |只看该作者
是否可以先合并行?

非以<a打头的行,全部合并到上一行去,再处理,会不会有不能合并的行?

论坛徽章:
0
6 [报告]
发表于 2009-02-19 15:23 |只看该作者

回复 #5 welcome008 的帖子

应该可以的

论坛徽章:
0
7 [报告]
发表于 2009-02-19 15:33 |只看该作者
原帖由 ly5066113 于 2009-2-19 15:05 发表
sed -r ':a;//!{N;s/\n//;ba};s/.*href="([^"]+)".*>(TEST[^

"s/\n//;"这个是否可以省略?

论坛徽章:
0
8 [报告]
发表于 2009-02-19 15:58 |只看该作者
sed -r ':a;/<\/a>/!{N;s/\n//;ba};s/.*href="([^"]+)".*>(TEST[^<]+)<.*/\1 \2/' urfile


看不明白可不可以讲解一下啊

论坛徽章:
0
9 [报告]
发表于 2009-02-19 16:22 |只看该作者
呵呵,一般是可以省略的.但是如果url换行了就不能不要了......
还是加s/\n//吧

论坛徽章:
0
10 [报告]
发表于 2009-02-19 18:24 |只看该作者
谢谢各位,特别是3楼:)。加一个 sed /^.&/d|grep ^http得到结果。
input可能有点误导了,不一定是TEST,也可能是其它的字符,非常感谢各位~学到了不少啊。

[ 本帖最后由 wesouler 于 2009-2-19 18:51 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP