网页下载遇到的两个问题!!!!紧急 ( 积分: 50 )

  • 主题发起人 主题发起人 愚鱼
  • 开始时间 开始时间

愚鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
现在通常流行扒网页的软件,1、为用户提供的都是“允许下载到第几层”,不知这种判断怎么来实现?是否根据地址中的斜杠'/'的个数呢?具体思路是什么?2、如何分析网页是否为本站内的链接地址,如:在sohu的网站内,发现有如友情链接到外站的网址,这样可略过,不下载这种网址的网页。
望各位高手赐教!!!!
 
现在通常流行扒网页的软件,1、为用户提供的都是“允许下载到第几层”,不知这种判断怎么来实现?是否根据地址中的斜杠'/'的个数呢?具体思路是什么?2、如何分析网页是否为本站内的链接地址,如:在sohu的网站内,发现有如友情链接到外站的网址,这样可略过,不下载这种网址的网页。
望各位高手赐教!!!!
 
击层的问题就是控制递归几层啊。

外部连接的话判断连接域名是不是本页的域名,或者子域名。
 
to satanmonkey,你说的递归具体怎么讲呢?与“/”的个数有没有关系呢,到底是依据什么思路来处理的呢?能不能详细解答一下?谢谢
 
看域名是否相同,为是否为该地址就可以了,
层数是不是目录?子目录。
 
一个网页下载完了以后,分析网页的代码中包含的所有链接,然后调用这些链接,再重复的检查链接,一层层的下去,不就全部都提取出来了.
 
to GuestUser我当然知道是这么做,你没明白我的意思,我现在要处理的是怎么判断我现在获取的网页在这个网站上是出于第几层的位置,想知道根据什么来判断
 
递归你知道是什么东西吧?那个层数就是递归几层,通俗点就是从当前网站到目的网站中间通过几个中间连接。

比如
3层的意思就是,从当前网站通过3次超联结可以到的网页都下载。

那个是不是内连接的判断就是判断url里面http://到第三个/之间的字符串是否一样。
 
获得网页检查ip地址
和sohu的地址不同就不加了
可以么
 
不 可以,因为sohu sina这些大站的域名是对应多个ip的,人家也要负载平衡
 
有个httpscan的控件,看一下就差不多明白吧,层数只是相对与开始的页面,点击几次后达到的页,和网站上的目录没有必然的关系
判断是否外面的连接,只是判断域名吧,二级域名好象算是本地的
 
to satanmonkey
我有点明白你递归的意思,但是在具体处理时我是把每个htm(源码)上的连接提取出来再来判断它是不是符合用户要求(例如:3层)的第三层,如果是的话就放到列表中等待下一步处理,如果大于了3则pass掉,这样的话怎么用你的递归原则呢,到底应该以什么标准来判断这被连接是出于第几层呢?
 
to xygz
httpscan的控件在哪能找到呢,你手头上有吗,能否给我一份?万分感谢
我的email:lzh5252@163.com
 
楼主不是科班出生的吧?递归都不知道,简单来说就是函数自己调用自己。
你的算法应该是这种
procedure getWeb(URL:string;count:integer)//count就是层数
begin
if count>你规定的层数 then
exit
分析当前url指向的html上的所有url放到一个列表list,然后递归调用列表的每个项,大概如下
for i:=0 to list.count do
begin
//其他操作
getweb(list.item,count+1)
end;

end;

大概就是这种算法。
 
后退
顶部