毕业论文
计算机论文
经济论文
生物论文
数学论文
物理论文
机械论文
新闻传播论文
音乐舞蹈论文
法学论文
文学论文
材料科学
英语论文
日语论文
化学论文
自动化
管理论文
艺术论文
会计论文
土木工程
电子通信
食品科学
教学论文
医学论文
体育论文
论文下载
研究现状
任务书
开题报告
外文文献翻译
文献综述
范文
面向主题的网络蜘蛛爬虫研究与设计+流程图(4)
4.2. SPIDER构造
构造SPIDER 程序有两种方式:(1)把SPIDER 程序设计为递归的程序;(2)编写一个非递归的程序,它要文护一个要访问的网页列表。考虑使用哪一种方式的前提是,构造的SPIDER 程序必须能够访问非常大的Web 站点。本系统中使用了非递归的程序设计方法。这是因为,当一个递归程序运行时要把每次递归压入堆栈,但在本系统设计中使用的是多线程,它允许一次运行多个任务,但是,多线程与递归是不兼容的。因为在这一过程中每一个线程都有自己的堆栈,而当一个方法调用它自身时,它们需要使用同一个堆栈。这就意着递归的SPIDER 程序不能使用多线程。
每个SPIDER线程都会独立的去完成获取URLs的任务,并将获取到的URLs加入一个公共的URL等待队列中。假设线程1从URL队列中获取一条任务URL 1,然后它会下载对应的HTML,解析出里面包含URLs,然后再将这些URLs加入到URL队列中去。然后线程1会再从URL队列中获取新的URL,下载HTML代码,并解析出URLs,再加入到URL队列中去。而线程2同时也会下载它获取到的URL 2对应的HTML代码,解析出URLs加入到等待队列中。以此类推,多个线程并发地去完成爬虫工作。
4.3. URL解析
从HTML代码中提取URLs,主要是通过检索字符串中的href字符串来实现的。对于一个HTML代码,我寻找其中的href=字符串,然后记录它的下表i。然后判断下表i+1位置上的字符是双引号,单引号或者两者皆不是,然后选择对应的字符作为截取URL的终止标记。截取过后的href标记就剔除它与它前面的部分,以便而后的操作可以继续检索href标记,直到整个HTML代码中所有的href标记都被解析过后,操作终止。
<a href="www.youerw.com" class="focu">首页</a>
<a href=’movie_2004/mlist/1_1.html’ target=_self>动作片</a>
<a href=movie_2004/mlist/2_1.html target=_self>恐怖片</a>
<a href=movie_2004/mlist/3_1.html >爱情片</a>
例如上面那段HTML代码。我们先检索href=标记,然后判断出第i+1位为一个双引号,所以我们可以截取i+1位到第2个双引号的位置。之间的这段字符串即为URL。当完成这一步操作后,原字符串被截取从“ class=”开始。我们继续检索href=标签,判断它的第i+1位为一个单引号,所以我们又截取i+1位到第2个单引号的位置。这步以后原字符串又被截取为“ target=”开始,我们可以继续检索href=标签。这个地方href=没有接续任何符号,所以当我们没有发现单引号或双引号的时候,可以判断为这种情况。我们就去检索空格和<标签,以下标较小的字符作为截取URL的结束标记。
在每个URL被截取出来之后,需要判断这些URL是相对地址,还是绝对地址。
<a href=../mlist/1_1.html target=_self >动作片</a>
例如上面的HTML代码,如果截取出来的URL为../mlist/1_1.html这种形式,即为相对地址。我们需要将其转化为绝对地址。假如这个相对地址的父URL为。根据相对地址的概念,../为返回上一层,所以可以得到这个相对地址的绝对地址为
l。比如像上面的第2种URL,它包含完整的协议信息,域名地址。可以判断它为绝对地址。
当得到这些完整的URL地址以后,我们需要对其进行过滤。很多URL它们指向的文件不是HTML文件,而是一些CSS文件,或者RAR包文件,或者只是接续“#”符号,代表只是调用一段javascript代码。像这种情况我们就直接抛弃这些URLs。
共5页:
上一页
1
2
3
4
5
下一页
上一篇:
数据挖掘中的隐私保护技术研究
下一篇:
JSP在线选课系统设计+需求分析+可行性分析
数据挖掘的主题标绘数据获取技术与实现
无跳线主板BIOS高级设置【706字】
联结主义的连续记分IRT模...
Project软件的主要功能及基...
提高网站茬Google中的排名...
互文性:网络时代對后结...
Web的多媒体CAI課件开发過...
国内外图像分割技术研究现状
10万元能开儿童乐园吗,我...
AT89C52单片机的超声波测距...
承德市事业单位档案管理...
神经外科重症监护病房患...
公寓空调设计任务书
C#学校科研管理系统的设计
医院财务风险因素分析及管理措施【2367字】
中国学术生态细节考察《...
志愿者活动的调查问卷表