首页 新闻 会员 周边 捐助

如何获取网页的所有链接

0
悬赏园豆:200 [已解决问题] 解决于 2008-09-04 16:46

绝对路径还是比较还处理的,使用正则就提取出来了,可是很多都是相对路径,怎么处理呢,有这方面经验的朋友来说说哈

lexus的主页 lexus | 初学一级 | 园豆:0
提问于:2008-09-04 12:20
< >
分享
最佳答案
0

楼主的这种情况是不存在的,如果地址只是 www.sina.com.cn 或 blog.sina.com.cn

那么根据标准,应被解释为当前的url下的www.sina.com.cn 或 blog.sina.com.cn目录。

我在本机wwwroot 目录下做了一个实验,在wwwroot 目录下创建一个test.htm,里面只

包含这么一句:

<a href="www.sina.com.cn">blog.sina.com.cn</a>

用IE和firefox打开 http://localhost/test.htm,并点击这个超链接,两个浏览器均指向

http://localhost/www.sina.com.cn 而不是 http://www.sina.com.cn

所以按楼上几位的方法做应该是没有问题的。

 

 

 

eaglet | 专家六级 |园豆:17139 | 2008-09-04 14:06
其他回答(6)
0

href = ('|")(.*?)('|")( |/)

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2008-09-04 12:33
0

ms-help://MS.MSDNQTR.v90.en/fxref_system/html/1fe52f7b-7367-a48a-abeb-dc46f0ab2e92.htm

 

先用正则表达式 <a[^>]+href=["']?(?'Url'[^"']+)['"][^>]*>找出所有的URL,

然后判断每个url是否以http开头,如果不是,就使用以下代码:

 

//string baseUrl = html source code的url;

//Uri baseUri = new Uri(baseUrl);

//string matchedUrl = 从正则表达式匹配到的url;

 

Uri newUri = new Uri(baseUri, matchedUrl);

string newUrl = newUri.ToString();

deerchao | 园豆:8367 (大侠五级) | 2008-09-04 12:39
0

只是一个获取页面源文件的方法
http://www.cnblogs.com/yruigood/archive/2008/08/27/1277753.html

取出网页源文件A标签里的超链接

http://www.cnblogs.com/yruigood/archive/2008/08/28/1278757.html

Yruigood | 园豆:185 (初学一级) | 2008-09-04 13:37
0

最简单的选择regulation正则表达式.....捕捉带http的

Jared.Nie | 园豆:1940 (小虾三级) | 2008-09-04 14:25
0

嗯?通过DOM获取是不是更简单直接一点?

document.getElementsByTagName("a")

然后可以通过href获取链接,如果没有href的视为锚点丢掉,另外href="#"的也丢掉,是不是就可以了?

丁学 | 园豆:18730 (专家六级) | 2008-09-04 14:31
0

--------------------------------------------------------------------------------------------------

楼主的这种情况是不存在的,如果地址只是 www.sina.com.cn 或 blog.sina.com.cn

那么根据标准,应被解释为当前的url下的www.sina.com.cn 或 blog.sina.com.cn目录。

……

1小时前   回答者:eaglet - 小虾三级

--------------------------------------------------------------------------------------------------

如这个小虾所言,所有链接的链接地址分为两类:绝对地址,相对地址。判断依据很简单,以"http://"打头为绝对地址,否则为相对地址。
对你所担忧的情况,“www.sina.com.cn”等人为认定绝对路径、但系统认定相对路径的情形,建议以系统认定为主,因为你不能排除某些站点存有这些特殊的相对目录。
当然,如果你当前的开发场景恰好需要将“
www.sina.com.cn”这些以绝对路径处理,那么建议用一张散列表(Dicrionary)存贮,一旦前缀(把 www.sina.com.cn/some.htm 处理成 www.sina.com.cn )匹配到该字典,就在其前面手动加 "http://"。
例外地,如果你人为认定的绝对路径具有一定的规律性,那大可以进行手动编程再处理。比如,所有前缀以 www. 打头, 以 .com 或 .cn 等结尾的,我均认为是绝对路径。

陛下 | 园豆:3938 (老鸟四级) | 2008-09-04 15:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册