大虾帮帮我!!!如何获得HTML页中链接的全地址?(100分)

  • 主题发起人 主题发起人 ccmm
  • 开始时间 开始时间
C

ccmm

Unregistered / Unconfirmed
GUEST, unregistred user!
例如:本页地址为 HTTP://A/B/C/D/
页面内的链接为 HREF="/B/C/D/1.HTML"
(当然有的可能是/c/d/1.html,就是这点麻烦,不知道是几层)
在IE中,当鼠标指到此位置时,可以得到全路径,HTTP://A/B/C/D/1.html
IE是怎么做到的,大虾请指教?我反复看源文件也不知道 :(
 
说清楚点,你是用什么来做的,Delphi,还是ASP。
如果你用ASP,
你通过一些参数如HTTP_REFERER、SCRIPT_NAME 、SERVER_NAME PATH_INFO ,
获得服务器名、路径名、文件名,然后组合起来就可以得到了
 
1、先取本网页在服务器的地址,
例如:本页地址为 HTTP://A/B/C/D/E.htm 就取 HTTP://A/B/C/D/
2、判断页面内的链接中是否有 'http://',有就作为绝对链接,直接返回它。
3、如果没有,就把1中取的地址加在当前链接字符串前面,返回。

我试过,应该可行。
 
TO:jackylong
是用DELPHI做的程序,想根据页面内的链接地址下载相应的网页,
TO:JACER
在网页内的相对地址,有时候包含好几层,是重复的,
象你说的,直接把地址加在前面,不行,比如可能成为 HTTP://A/B/C/B/C/。。。
我自己加了判断,到是可以得到。
但是,我觉得网页中肯定应该有说明,本网页的相对地址都应该加上什么头?
要不,为什么IE中,当鼠标滑过时,都会显示全地址呢?总觉得它不应该是判断得到的吧:P
 
我用的是TNMHTTP控件,不知道是不是可以由控件的参数得到?
 
改一下:
1、先取本网页在服务器的地址,
例如:本页地址为 HTTP://A/B/C/D/E.htm 就取 HTTP://A/B/C/D/
2、判断页面内的链接中是否有 'http://',有就作为绝对链接,直接返回它。
3、如果没有,分两种情况
I、页面内的链接第一个字符为'/',
就用host特性取得主机地址,返回:'http://'+host+页面内的链接。
II、页面内的链接第一个字符不是'/',
返回:1中取的地址+页面内的链接。

相对地址,如果是这样的 ../../G/H.htm
加上去的话就是 HTTP://A/B/C/D/../../G/H.htm
这是可以的,它代表 HTTP://A/B/G/H.htm
要想显示的漂亮些,可以自己把中间那一段去掉。
 
你是想直接分析文件还是怎么着?
如果可以读入WebBrowser我知道怎样提取链接和链接标题。
 
多人接受答案了。
 
后退
顶部