LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1677|回复: 19

关于awk脚本检测web页链接数的问题

[复制链接]
发表于 2006-5-12 10:23:00 | 显示全部楼层 |阅读模式
需要用awk脚本写一个检测网页链接数的脚本

就是检测一个网页的源代码找出其中链接并把它们列出来

怎么样才能过滤出网页地址?
 楼主| 发表于 2006-5-12 11:48:28 | 显示全部楼层
如果是一个数据库类的文件,可以找出其中的分隔符,网页代码中没有分隔符,如何才能把要用的关于链接的字符串过滤出来?

再把这些链接分成图片(jpg等),网页(html,htm),和其它三部分显示呢?
回复 支持 反对

使用道具 举报

发表于 2006-5-12 12:05:05 | 显示全部楼层
你是说提取所有<a href="url">中的url? 所有相对的和绝对的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-12 12:12:36 | 显示全部楼层
是的,就是提取所有的url并把它们列出来,但是不明白你指的相对的和绝对的是什么意思。
回复 支持 反对

使用道具 举报

发表于 2006-5-12 12:15:07 | 显示全部楼层
我是指

<a href="../foo.jpg">link here</a>

<a href="http://www.linuxsir.cn">link here</a>

也不是绝对路径和相对路径,而是是否是完整的url。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-12 12:17:30 | 显示全部楼层
<HTML >

<HEAD>

<TITLE>Jufei Zhang's HomePage</TITLE>

</HEAD>

<BODY>

<H1> Home Page</H1>

<> this is a  HTML  document. </P>

<><A
HREF="http://www.google.com/index.html">Google Home Page</a> </P>

<><A HREF="http://www.google.com/index.html">Google Home</A>
</P>

<><A HREF="http://www.google.com/index.html" >Google</A>
</P>
</BODY>

</HTML >


比如说以上网页的代码
awk -F= '{if($0~/html/) print $2}' index.htm

就可以得到如下信息

"http://www.google.com/index.html">Google Home Page</a> </P>
"http://www.google.com/index.html">Google Home</A>
"http://www.google.com/index.html" >Google</A>

问题是我想要的是其中的http://www.google.com/index.html部分
回复 支持 反对

使用道具 举报

发表于 2006-5-12 12:20:00 | 显示全部楼层
还要考虑到Fragment identifiers,比如

<a href=foo.html#section_1>link here</a>
回复 支持 反对

使用道具 举报

发表于 2006-5-12 12:22:10 | 显示全部楼层
如果是完整url那也许可以

sed -n "s/.*\(http.*html\).*/\1/p"
回复 支持 反对

使用道具 举报

发表于 2006-5-12 12:24:47 | 显示全部楼层
url的正则表达式

  1. (((http|https|ftp|gopher)|mailto):(//)?[^ <>"\t]*|(www|ftp)[0-9]?\.[-a-z0
  2. -9.]+)[^ .,;\t\n\r<">\):]?[^, <>"\t]*[^ .,;\t\n\r<">\):]
复制代码


摘自urlview(1)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-12 12:32:22 | 显示全部楼层
我想使用awk,我的qq是:13882748, 能不能加我,具体地跟我讲讲?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表