(精品)网络爬虫的设计与实现毕业论文

(精品)网络爬虫的设计与实现毕业论文
(精品)网络爬虫的设计与实现毕业论文

摘要

网络爬虫是一种自动搜集互联网信息的程序。通过网络爬虫不仅能够为搜索引擎采集网络信息,而且可以作为定向信息采集器,定向采集某些网站下的特定信息,如招聘信息,租房信息等。

本文通过JAVA实现了一个基于广度优先算法的多线程爬虫程序。本论文阐述了网络爬虫实现中一些主要问题:为何使用广度优先的爬行策略,以及如何实现广度优先爬行;为何要使用多线程,以及如何实现多线程;系统实现过程中的数据存储;网页信息解析等。

通过实现这一爬虫程序,可以搜集某一站点的URLs,并将搜集到的URLs 存入数据库。

【关键字】网络爬虫;JAVA;广度优先;多线程。

ABSTRACT

SPIDER is a program which can auto collect informations from internet. SPIDER can collect data for search engines, also can be a Directional information collector, collects specifically informations from some web sites, such as HR informations, this paper, use JAVA implements a breadth-first algorithm multi-thread SPDIER. This paper expatiates some major problems of SPIDER: why to use breadth-first crawling strategy, and collect URLs from one web site, and store URLs into database.

【KEY WORD】SPIDER; JA V A; Breadth First Search; multi-threads.

目录

第一章引言 (1)

第二章相关技术介绍 (2)

2.1JAVA线程 (2)

2.1.1 线程概述 (2)

2.1.2 JAVA线程模型 (2)

2.1.3 创建线程 (3)

2.1.4 JAVA中的线程的生命周期 (4)

2.1.5 JAVA线程的结束方式 (4)

2.1.6 多线程同步 (5)

2.2URL消重 (5)

2.2.1 URL消重的意义 (5)

2.2.2 网络爬虫URL去重储存库设计 (5)

2.2.3 LRU算法实现URL消重 (7)

2.3URL类访问网络 (8)

2.4爬行策略浅析 (8)

2.4.1宽度或深度优先搜索策略 (8)

2.4.2 聚焦搜索策略 (9)

2.4.3基于内容评价的搜索策略 (9)

2.4.4 基于链接结构评价的搜索策略 (10)

2.4.5 基于巩固学习的聚焦搜索 (11)

2.4.6 基于语境图的聚焦搜索 (11)

第三章系统需求分析及模块设计 (13)

3.1系统需求分析 (13)

3.2SPIDER体系结构 (13)

3.3各主要功能模块(类)设计 (14)

3.4SPIDER工作过程 (14)

第四章系统分析与设计 (16)

4.1SPIDER构造分析 (16)

4.2爬行策略分析 (17)

4.3URL抽取,解析和保存 (18)

4.3.1 URL抽取 (18)

4.3.2 URL解析 (19)

4.3.3 URL保存 (19)

第五章系统实现 (21)

5.1实现工具 (21)

5.2爬虫工作 (21)

5.3URL解析 (22)

5.4URL队列管理 (24)

5.4.1 URL消重处理 (24)

5.4.2 URL等待队列维护 (26)

5.4.3 数据库设计 (27)

第六章系统测试 (29)

第七章结论 (32)

参考文献 (33)

致谢 (34)

外文资料原文 (35)

译文 (51)

第一章引言

随着互联网的飞速发展,网络上的信息呈爆炸式增长。这使得人们在网上找到所需的信息越来越困难,这种情况下搜索引擎应运而生。搜索引擎搜集互联网上数以亿计的网页,并为每个词建立索引。在建立搜索引擎的过程中,搜集网页是非常重要的一个环节。爬虫程序就是用来搜集网页的程序。以何种策略偏历互联网上的网页,也成了爬虫程序主要的研究方向。现在比较流行的搜索引擎,比如google,百度,它们爬虫程序的技术内幕一般都不公开。目前几种比较常用的爬虫实现策略:广度优先的爬虫程序,Repetitive爬虫程序,定义爬行爬虫程序,深层次爬行爬虫程序。此外, 还有根据概率论进行可用Web 页的数量估算, 用于评估互联网Web规模的抽样爬虫程序; 采用爬行深度、页面导入链接量分析等方法, 限制从程序下载不相关的Web页的选择性爬行程序等等。

爬虫程序是一个自动获取网页的程序。它为搜索引擎从互联网上下载网页,是搜索引擎的重要组成部分。爬虫程序的实现策略,运行效率直接影响搜索引擎的搜索结果。不同的搜索引擎,会根据对搜索结果的不同需求,选择最合适的爬行策略来搜集互联网上的信息。高效,优秀的爬虫程序可以使人们在互联网上寻找到更及时,更准确的信息。

实现网络爬虫的重点和难点有:多线程的实现;对临界资源的分配;遍历web 图的遍历策略选择和实现;存储数据结构的选择和实现。

本文通过JAVA语言实现一个基于广度优先偏历算法的多线程爬虫程序。通过实现此爬虫程序可以定点搜集某一站点的URLs,如果需要搜集其他信息,可以在解析URLs的同时,解析获取相应信息。

第二章相关技术介绍

2.1 JAVA线程

2.1.1 线程概述

几乎每种操作系统都支持线程的概念—进程就是在某种程度上相互隔离的,独立运行的程序。一般来说,这些操作系统都支持多进程操作。所谓多进程,就是让系统(好像)同时运行多个程序。比如,我在Microsoft Word编写本论文的时候,我还打开了一个mp3播放器来播放音乐,偶尔的,我还会再编辑Word的同时让我的机器执行一个打印任务,而且我还喜欢通过IE从网上下载一个Flash动画。对于我来说,这些操作都是同步进行的,我不需要等一首歌曲放完了再来编辑我的论文。看起来,它们都同时在我的机器上给我工作。

事实的真相是,对于一个CPU而言,它在某一个时间点上,只能执行一个程序。CPU不断的在这些程序之间“跳跃”执行。那么,为什么我们看不出任何的中断现象呢?这是因为,相对于我们的感觉,它的速度实在太快了。我们人的感知时间可能以秒来计算。而对于CPU而言,它的时间是以毫秒来计算的,从我们肉眼看来,它们就是一个连续的动作。

因此,虽然我们看到的都是一些同步的操作,但实际上,对于计算机而言,它在某个时间点上只能执行一个程序,除非你的计算机是多CPU的。

多线程(Multi-Thread)扩展了多进程(multi-Process)操作的概念,将任务的划分下降到了程序级别,使得各个程序似乎可以在同一个时间内执行多个任务。每个任务称为一个线程,能够同时运行多个线程的程序称为多线程程序。

多线程和多进程有什么区别呢?对于进程来说,每个进程都有自己的一组完整的变量,而线程则共享相同的数据。

2.1.2 JAVA线程模型

我们知道,计算机程序得以执行的三个要素是:CPU,程序代码,可存取的数据。在JAVA语言中,多线程的机制是通过虚拟CPU来实现的。可以形象的理解为,在一个JAVA程序内部虚拟了多台计算机,每台计算机对应一个线程,有自己的CPU,可以获取所需的代码和数据,因此能独立执行任务,相互间还可以共用代码和数据。JAVA的线程是通过https://www.360docs.net/doc/a65639260.html,ng.Thread类来实现的,它内部实现了虚拟CPU的功能,能够接收和处理传递给它的代码和数据,并

提供了独立的运行控制功能。

我们知道,每个JAVA应用程序都至少有一个线程,这就是所谓的主线程。它由JVM创建并调用JAVA应用程序的main()方法。

JVM还通常会创建一些其他的线程,不过,这些线程对我们而言通常都是不可见的。比如,用于自动垃圾收集的线程,对象终止或者其他的JVM处理任务相关的线程。

2.1.3 创建线程

2.1.

3.1 创建线程方式一

在JAVA中创建线程的一种方式是通过Thread来实现的。Thread有很多个构造器来创建一个线程(Thread)实例:

Thread();创建一个线程。

Thread(Runnable target);创建一个线程,并指定一个目标。

Thread(Runnable target,String name);创建一个名为name的目标为target 的线程。

Thread(String name);创建一个名为name的线程。

Thread(ThreadGroup group,Runnable target);创建一个隶属于group线程组,目标为target的线程。

通常,我们可以将一个类继承Thread,然后,覆盖Thread中的run()方法,这样让这个类本身也就成了线程。

每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。

使用start()方法,线程进入Runnable状态,它将线程调度器注册这个线程。调用start()方法并不一定马上会执行这个线程,正如上面所说,它只是进入Runnble而不是Running。

2.1.

3.2 创建线程方式二

通过实现Runnable接口并实现接口中定义的唯一方法run(),可以创建一个线程。在使用Runnable接口时,不能直接创建所需类的对象并运行它,而是必须从Thread类的一个实例内部运行它。

从上面两种创建线程的方法可以看出,如果继承Thread类,则这个类本身

可以调用start方法,也就是说将这个继承了Thread的类当作目标对象;而如果实现Runnable接口,则这个类必须被当作其他线程的目标对象。

2.1.4 JA V A中的线程的生命周期

JAVA的线程从产生到消失,可分为5种状态:新建(New),可运行(Runnable),运行(Running),阻塞(Blocked)以及死亡(Dead)。其中,Running状态并非属于JAVA规范中定义的线程状态,也就是说,在JAVA 规范中,并没有将运行(Running)状态真正的设置为一个状态,它属于可运行状态的一种。

当使用new来新建一个线程时,它处于New状态,这个时候,线程并未进行任何操作。

然后,调用线程的start()方法,来向线程调度程序(通常是JVM或操作系统)注册一个线程,这个时候,这个线程一切就绪,就等待CPU时间了。

线程调度程序根据调度策略来调度不同的线程,调用线程的run方法给已经注册的各个线程以执行的机会,被调度执行的线程进入运行(Running)状态。当线程的run方法运行完毕,线程将被抛弃,进入死亡状态。你不能调用restart方法来重新开始一个处于死亡状态的线程,但是,你可以调用处于死亡状态的线程对象的各个方法。

如果线程在运行(Running)状态中因为IO阻塞,等待键盘键入,调用了线程的sleep方法,调用了对象的wait()方法等,则线程将进入阻塞状态,直到这些阻塞原因被解除,如:IO完成,键盘输入了数据,调用sleep方法后的睡眠时间到以及其他线程调用了对象的notify或notifyAll方法来唤醒这个因为等待而阻塞的线程等,线程将返回到Runnable状态重新等待调度程序调度,注意,被阻塞的线程不会直接返回到Running状态,而是重新回到Runnable状态等待线程调度程序的调用。

线程调度程序会根据调度情况,将正在运行中的线程设置为Runnable状态,例如,有一个比当前运行状态线程更高运行等级的线程进入Runnable状态,就可能将当前运行的线程从Running状态“踢出‖,让它回到Runnable状态。

2.1.5 JA V A线程的结束方式

线程会以以下三种方式之一结束:

线程到达其run()方法的末尾;

线程抛出一个未捕获到的Exception或Error;

另一个线程调用一个Deprecated的stop()方法。注意,因为这个方法会引起线程的安全问题,已经被不推荐使用了,所以,不要再程序调用这个方法。

2.1.6 多线程同步

当同时运行的相互独立的线程需要共享数据并且需要考虑其他线程的状态时,就需要使用一套机制使得这些线程同步,避免在争用资源时发生冲突,甚至发生死锁。JAVA提供了多种机制以实现线程同步。多数JAVA同步是以对象锁定为中心的。JAVA中从Object对象继承来的每个对象都有一个单独的锁。由于JAVA中的每个对象都是从Object继承来的。所以JAVA中的每个对象都有自己的锁。这样使它在共享的线程之间可以相互协调。在JAVA中实现线程同步的另一个方法是通过使用synchronized关键字。JAVA使用synchronized 关键字来定义程序中要求线程同步的部分。synchronized关键字实现的基本操作是把每个需要线程同步的部分定义为一个临界区,在临界区中同一时刻只有一个线程被执行。

2.2 URL消重

2.2.1 URL消重的意义

在SPIDER系统实际运行的过程中,每秒下载的10个页面中,分析的URL 大多数是重复的,实际上新的URL才几个。在持续下载的过程中,新的URL 非常少,还是以新浪网举例,1天24小时中总共出现的新URL也就是10000左右。这种情况非常类似于操作系统中虚拟储存器管理。所谓的虚拟储存器,是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩充的一种储存器系统。其关键在于允许一个作业只装入部分的页或段就可以启动运行,当作业运行的时候在内存中找不到所需要的页或段的时候,就会发生请求调入,而从外存中找到的页或段将会置换内存中暂时不运行的页面到外存。

URL消重工作量是非常巨大的。以下在新浪新闻页面为例,新浪一个新闻页面大小为50~60k,每个页面有90~100个URL,如果每秒下载10个页面,就会产生900~1000次的URL排重操作,每次排重操作都要在几百万至几千万的URL库中去查询。这种操作对数据库系统是一个灾难,理论上任何需要产生磁盘IO动作的存储系统都无法满足这种查询的需求。

2.2.2 网络爬虫URL去重储存库设计

在爬虫启动工作的过程中,我们不希望同一个网页被多次下载,因为重复下载不仅会浪费CPU机时,还会为搜索引擎系统增加负荷。而想要控制这种重复性下载问题,就要考虑下载所依据的超链接,只要能够控制待下载的URL 不重复,基本可以解决同一个网页重复下载的问题。

非常容易想到,在搜索引擎系统中建立一个全局的专门用来检测,是否某一个URL对应的网页文件曾经被下载过的URL存储库,这就是方案。接着要考虑的就是如何能够更加高效地让爬虫工作,确切地说,让去重工作更加高效。如果实现去重,一定是建立一个URL存储库,并且已经下载完成的URL在进行检测时候,要加载到内存中,在内存中进行检测一定会比直接从磁盘上读取速度快很多。我们先从最简单的情况说起,然后逐步优化,最终得到一个非常不错的解决方案。

2.2.2.1 基于磁盘的顺序存储

这里,就是指把每个已经下载过的URL进行顺序存储。你可以把全部已经下载完成的URL存放到磁盘记事本文件中。每次有一个爬虫线程得到一个任务URL开始下载之前,通过到磁盘上的该文件中检索,如果没有出现过,则将这个新的URL写入记事本的最后一行,否则就放弃该URL的下载。

这种方式几乎没有人考虑使用了,但是这种检查的思想是非常直观的。试想,如果已经下载了100亿网页,那么对应着100亿个链接,也就是这个检查URL 是否重复的记事本文件就要存储这100亿URL,况且,很多URL字符串的长度也不小,占用存储空间不说,查找效率超级低下,这种方案肯定放弃。

2.2.2.2 基于Hash算法的存储

对每一个给定的URL,都是用一个已经建立好的Hash函数,映射到某个物理地址上。当需要进行检测URL是否重复的时候,只需要将这个URL进行Hash映射,如果得到的地址已经存在,说明已经被下载过,放弃下载,否则,将该URL及其Hash地址作为键值对存放到Hash表中。

这样,URL去重存储库就是要维护一个Hash表,如果Hash函数设计的不好,在进行映射的时候,发生碰撞的几率很大,则再进行碰撞的处理也非常复杂。而且,这里使用的是URL作为键,URL字符串也占用了很大的存储空间。2.2.2.3 基于MD5压缩映射的存储

MD5算法是一种加密算法,同时它也是基于Hash的算法。这样就可以对URL字符串进行压缩,得到一个压缩字符串,同时可以直接得到一个Hash地址。另外,MD5算法能够将任何字符串压缩为128位整数,并映射为物理地址,

而且MD5进行Hash映射碰撞的几率非常小,这点非常好。从另一个方面来说,非常少的碰撞,对于搜索引擎的爬虫是可以容忍的。况且,在爬虫进行检测的过程中,可以通过记录日志来保存在进行MD5时发生碰撞的URL,通过单独对该URL进行处理也是可行的。

在Java中有一个Map类非常好,你可以将压缩后的URL串作为Key,而将Boolean作为Value进行存储,然后将工作中的Map在爬虫停止工作后序列化到本地磁盘上;当下一次启动新的爬虫任务的时候,再将这个Map反序列化到内存中,供爬虫进行URL去重检测。

2.2.2.4 基于嵌入式Berkeley DB的存储

Berkeley DB的特点就是只存储键值对类型数据,这和URL去重有很大关系。去重,可以考虑对某个键,存在一个值,这个值就是那个键的状态。使用了Berkeley DB,你就不需要考虑进行磁盘IO操作的性能损失了,这个数据库在设计的时候很好地考虑了这些问题,并且该数据库支持高并发,支持记录的顺序存储和随机存储,是一个不错的选择。

URL去重存储库使用Berkeley DB,压缩后的URL字符串作为Key,或者直接使用压缩后的URL字节数组作为Key,对于Value可以使用Boolean,一个字节,或者使用字节数组,实际Value只是一个状态标识,减少Value存储占用存储空间。

2.2.2.5 基于布隆过滤器(Bloom Filter)的存储

使用布隆过滤器,设计多个Hash函数,也就是对每个字符串进行映射是经过多个Hash函数进行映射,映射到一个二进制向量上,这种方式充分利用了比特位。不过,我没有用过这种方式,有机会可以尝试一下。可以参考Google 的);

如果传递无效的URL给URL对象,该对象会抛出MalformedURLException异常。当成功创建一个URL对象后,我们调用openConnection函数建立与URL的通信,此时,我们就获得了一个URLConnection对象的引用,URLConnection类包含了许多与网络上的URL 通信的函数。在下载网页前,我们需要判断目标网页是否存在,这时调用URLConnection类的getHeaderField()方法,获得服务器返回给SPIDER 程序的响应码,如果响应码包含‖20*‖字样,表示目标网页存在,下一步就下载网页,否则就不下载。getHeaderField()方法仅仅获得服务器返回的头标志,其通信开销是最小的,因此在下载网页前进行此测试,不仅能减小网络流量,而且能提

高程序效率。当目标网页存在时2调用URLConnection类getInputStream()函数明确打开到URL的连接,获取输入流,再用java.io包中的InputStreamReader类读取该输入流,将网页下载下来。

2.4 爬行策略浅析

2.4.1宽度或深度优先搜索策略

搜索引擎所用的第一代网络爬虫主要是基于传统的图算法, 如宽度优先或深度优先算法来索引整个Web, 一个核心的U RL 集被用来作为一个种子集合, 这种算法递归的跟踪超链接到其它页面, 而通常不管页面的内容, 因为最终的目标是这种跟踪能覆盖整个Web. 这种策略通常用在通用搜索引擎中,因为通用搜索引擎获得的网页越多越好, 没有特定的要求.

2.4.1.1宽度优先搜索算法

宽度优先搜索算法(又称广度优先搜索) 是最简便的图的搜索算法之一, 这一算法也是很多重要的图的算法的原型. Dijkstra 单源最短路径算法和Prim 最小生成树算法都采用了和宽度优先搜索类似的思想.宽度优先搜索算法是沿着树的宽度遍历树的节点, 如果发现目标, 则算法中止. 该算法的设计和实现相对简单, 属于盲目搜索. 在目前为覆盖尽可能多的网页, 一般使用宽度优先搜索方法. 也有很多研究将宽度优先搜索策略应用于聚焦爬虫中. 其基本思想是认为与初始U RL 在一定链接距离内的网页具有主题相关性的概率很大. 另外一种方法是将宽度优先搜索与网页过滤技术结合使用, 先用广度优先策略抓取网页, 再将其中无关的网页过滤掉. 这些方法的缺点在于, 随着抓取网页的增多, 大量的无关网页将被下载并过滤, 算法的效率将变低.

2.4.1.2深度优先搜索

深度优先搜索所遵循的搜索策略是尽可能“深”地搜索图. 在深度优先搜索中, 对于最新发现的顶点, 如果它还有以此为起点而未探测到的边, 就沿此边继续汉下去. 当结点v 的所有边都己被探寻过, 搜索将回溯到发现结点v 有那条边的始结点. 这一过程一直进行到已发现从源结点可达的所有结点为止. 如果还存在未被发现的结点, 则选择其中一个作为源结点并重复以上过程, 整个进程反复进行直到所有结点都被发现为止. 深度优先在很多情况下会导致爬虫的陷入( trapped) 问题, 所以它既不是完备的, 也不是最优的.

2.4.2 聚焦搜索策略

基于第一代网络爬虫的搜索引擎抓取的网页一般少于 1 000 000 个网页, 极少重新搜集网页并去刷新索引. 而且其检索速度非常慢, 一般都要等待10 s 甚至更长的时间. 随着网页页信息的指数级增长及动态变化, 这些通用搜索引擎的局限性越来越大, 随着科学技术的发展, 定向抓取相关网页资源的聚焦爬虫便应运而生.聚焦爬虫的爬行策略只挑出某一个特定主题的页面, 根据“最好优先原则”进行访问, 快速、有效地获得更多的与主题相关的页面, 主要通过内容和Web 的链接结构来指导进一步的页面抓取[ 2 ].

聚焦爬虫会给它所下载下来的页面分配一个评价分, 然后根据得分排序, 最后插入到一个队列中. 最好的下一个搜索将通过对弹出队列中的第一个页面进行分析而执行, 这种策略保证爬虫能优先跟踪那些最有可能链接到目标页面的页面. 决定网络爬虫搜索策略的关键是如何评价链接价值, 即链接价值的计算方法, 不同的价值评价方法计算出的链接的价值不同, 表现出的链接的“重要程度”也不同, 从而决定了不同的搜索策略. 由于链接包含于页面之中,而通常具有较高价值的页面包含的链接也具有较高的价值, 因而对链接价值的评价有时也转换为对页面价值的评价. 这种策略通常运用在专业搜索引擎中, 因为这种搜索引擎只关心某一特定主题的页面.

2.4.3基于内容评价的搜索策略

基于内容评价的搜索策略[ 3, 4 ] , 主要是根据主题(如关键词、主题相关文档) 与链接文本的相似度来评价链接价值的高低, 并以此决定其搜索策略: 链接文本是指链接周围的说明文字和链接U RL 上的文字信息, 相似度的评价通常采用以下公式:

sim (d i, d j ) =Σmk= 1w ik ×w jk(Σmk= 1w 2ik ) (Σmk= 1w 2jk )

其中, di 为新文本的特征向量, d j为第j 类的中心向量,m为特征向量的维数,wk为向量的第K维.由于Web 页面不同于传统的文本, 它是一种半结构化的文档, 包含许多结构信息Web 页面不是单独存在的, 页面中的链接指示了页面之间的相互关系, 因而有些学者提出了基于链接结构评价链接价值的方法.

2.4.4 基于链接结构评价的搜索策略

基于链接结构评价的搜索策略, 是通过对Web页面之间相互引用关系的分析来确定链接的重要性, 进而决定链接访问顺序的方法. 通常认为有较多入链或出链的页面具有较高的价值. PageRank 和Hits 是其中具有代表性的算法.

2.4.4.1PageRank 算法

基于链接评价的搜索引擎的优秀代表是Google ( (p )PR (p )?ou t (C) ?

其中T 为计算中的页面总量, C< 1是阻尼常数因子, in (p )为所有指向p 的页面的集合, out (C) 为页面C出链的集合. 基于PageRank 算法的网络爬虫在搜索过程中, 通过计算每个已访问页面的PageRank 值来确定页面的价值, 并优先选择PageRank 值大的页面中的链接进行访问.

2.4.4.2H ITS 算法

HITS 方法定义了两个重要概念: Authority 和Hub. Authority 表示一个权威页面被其它页面引用的数量, 即该权威页面的入度值. 网页被引用的数量越大, 则该网页的Authority 值越大; Hub 表示一个Web 页面指向其它页面的数量, 即该页面的出度值. 网页的出度值越大, 其Hub 值越高. 由于Hub 值高的页面通常都提供了指向权威页面的链接, 因而起到了隐含说明某主题页面权威性的作用.HITS (Hyperlink- Induced Top ic Search) 算法是利用Hub?Authority 方法的搜索方法,Authority表示一个页面被其它页面引用的数量, 即该页面的入度值. Hub 表示一个Web 页面指向其它页面的数量, 即该页面的出度值. 算法如下: 将查询q 提交给传统的基于关键字匹配的搜索引擎. 搜索引擎返回很多网页, 从中取前n 个网页作为根集, 用S 表示.通过向S 中加入被S 引用的网页和引用S 的网页将S扩展成一个更大的集合T.以T 中的Hub 网页为顶点集V l,以权威网页为顶点集V 2,V1 中的网页到V 2 中的网页的超链接为边集E , 形成一个二分有向图S G = (V 1,V 2, E ).对V 1 中的任一个顶点v ,用H (v )表示网页v 的Hub值, 对V 2 中的顶点u,用A (u) 表示网页的Authority值. 开始时H (v ) = A (u) = 1, 对u 执行公式(1) 来修改它的A (u) ,对v 执行公式(2) 来修改它的H (v ) ,然后规范化A (u) , H (v ) ,如此不断的重复计算上述运算, 直到A (u) , H (v ) 收敛.

A (u) = Σ v: (v , u) ∈EH (v ) (1)

H (v ) = Σ v: (v, u) ∈EA (v ) (2)

式(1) 反映了若一个网页由很多好的Hub 指向, 则其权威值会相应增加(即权威值增加为所有指向它的网页的现有Hub值之和). 式(2) 反映了若一个网页指向许多好的权威页, 则Hub 值也会相应增加(即Hub 值增加为该网页链接的所有网页的权威值之和).虽然基于链接结构价的搜索考虑了链接的结构和页面之间的引用关系, 但忽略了页面与主题的相关性, 在某些情况下, 会出现搜索偏离主题的问题. 另外, 搜索过程中需要重复计算PageRank 值或Authority以及Hub

权重, 计算复杂度随页面和链接数量的增长呈指数级增长[ 6 ].

2.4.5 基于巩固学习的聚焦搜索

近年来对Web 信息资源分布的研究表明很多类型相同的网站在构建方式上, 主题相同的网页在组织方式上都存在着一定的相似性, 有的学者就考虑将巩固学习引入网络爬虫的训练过程中, 从这些相似性获取一些“经验”, 而这些经验信息在搜索距相关页面集较远的地方往往能获得较好的回报, 而前两种策略在这种情况下容易迷失方向.在巩固学习模型中, 把网络爬虫经过若干无关页面的访问之后才能获得的主题相关页面称为未来回报, 对未来回报的预测值称为未来回报价值, 用Q价值表示. 这种方法的核心就是学习如何计算链接的Q 价值, 根据未来回报价值确定正确的搜索方向. 目前这类搜索策略不足之处在于学习效率低的问题, 而且在训练过程中增加了用户的负担.

2.4.6 基于语境图的聚焦搜索

基于巩固学习的网络爬虫通过计算链接的Q价值可以确定搜索方向, 但它却无法估计距离目标页面的远近. 为此,Diligent等提出了基于“语境图”的搜索策略, 它通过构建典型页面的web“语境图”来估计离目标页面的距离, 距离较近的页面较早得到访问[ 7 ].基于“语境图”的搜索策略需要借助已有的通用搜索引擎构建“语境图”, 而搜索引擎的检索结果并非一定代表真实的web 结构, 因而这种方式也具有局限性.

第三章系统需求分析及模块设计

3.1 系统需求分析

SPIDER要获取的对象是存在于网络上数以亿计的网页,这些网页以超链接形式互相联系在一起,每一网页对应一个超链接,也称统一资源定位符(URL)。我们可以把网络看做一个图M(V,E),网络中的网页构成节点集V,他们之间的链接构成边集E,SPIDER正是从某一节点开始,沿着边,遍历图M,每访问到图中一个节点Vi,就进行一定的处理。

为了达到上述目的,一个SPIDER必须被设计成多线程的,A 个线程并发地在网络上协同工作,才有可能在尽可能短的时间内遍历完网络中的网页。但网页数目是如此之大,如果任SPIDER程序无穷地搜索下去,那么程序几乎不能终止。所以我们限制SPIDER每次工作只访问一个站点。一个再大型的站点,其中的网页数目也是有限的,因此SPIDER程序能在有限的时间内结束。

当SPIDER程序访问到一个网页,必须进行以下几项基本处理:抽取网页中包含的文本;抽取网页中包含的URL,并将其区分为网站内URL或网站外URL。

3.2 SPIDER体系结构

此爬虫程序主要分为三个部分:任务执行端,任务调度端,数据服务端。

每一个SPIDER 任务执行端关联一个站点,一个线程下载一个基于URL 链接的页面, 并进行Web 页面解析, 得到站内URL 和发现新站点URL另外,将URL 队列持久化到数据库, 因此在SPIDER 任务执行端以外Down掉后, 能够断点续传.

SPIDER 客户端线程间的协调通信采用Java 的线程同步技术synchronized,在数据服务端中对URL 进行缓存提高了系统处理速度. SPIDER 的任务执行和任务调度端都需要维持一个URL 队列: 任务执行端的URL 队列中存储了站内URL; 任务调度端则是站点的URL.在这些URL 队列上有大量的操作, 包括URL 查找、URL插入、URL 状态更新等. 如果SPIDER 以300 页?秒的速度下载Web 页面, 平均将会产生2000 多个URL [12] ,因此简单的采用内存数据结构存储这些URL 队列有一定的问题, 系统没有足够的内存空间;而采用直接持久化到数据库, 则需要大量的数据库连接、查询等操作, 系统效率会明显下降. 如果采用URL 压缩的办法,尽管在一定程度上可以平衡空间和时间的矛盾, 但仍然不适用于大规模数据采集的SPIDER.

图3.2 SPIDER体系结

3.3 各主要功能模块(类)设计

SPIDERWorker类:该类继承自线程类,请求任务URL,根据得到的URL 下载相应的HTML代码,利用HTML代码调用其他模块完成相关处理。

SPIDERManager类:该类用于控制SPIDERWorker线程。

UrlQueueManager类:该类用于维护URL等待队列,分配任务URL,URL 消重模块。

UrlParse类:用于解析HTML,获取并过滤URL。

DateBaseConnect类:用于提供数据库连接。

3.4 SPIDER工作过程

①将给定的初始URL加入到URL等待队列。

②创建爬虫线程,启动爬虫线程

③每个爬虫线程从URL等待队列中取得任务URL。然后根据URL下载网页,然后解析网页,获取超链接URLs。如果获取到的URL为相对地址,需要转换为绝对地址,然后淘汰站外URLs,错误URLs或者不能解析的URL地址。再判断这些URL是否已经被下载到,如果没有则加入到URL等待队列。

④继续执行步骤③,直到结束条件停止。

第四章系统分析与设计

4.1 SPIDER构造分析

构造SPIDER 程序有两种方式:(1)把SPIDER 程序设计为递归的程序;(2)编写一个非递归的程序,它要维护一个要访问的网页列表。考虑使用哪一种方式的前提是,构造的SPIDER 程序必须能够访问非常大的Web 站点。本系统中使用了非递归的程序设计方法。这是因为,当一个递归程序运行时要把每次递归压入堆栈,但在本系统设计中使用的是多线程,它允许一次运行多个任务,但是,多线程与递归是不兼容的。因为在这一过程中每一个线程都有自己的堆栈,而当一个方法调用它自身时,它们需要使用同一个堆栈。这就意味着递归的SPIDER 程序不能使用多线程。

每个SPIDER线程都会独立的去完成获取URLs的任务,并将获取到的URLs加入一个公共的URL等待队列中。

图4.1

图4.1表示了该系统爬虫线程的实现策略。假设线程1从URL队列中获取一条任务URL 1,然后它会下载对应的HTML,解析出里面包含URLs,然后再将这些URLs加入到URL队列中去。然后线程1会再从URL队列中获取新的URL,下载HTML代码,并解析出URLs,再加入到URL队列中去。而线程2同时也会下载它获取到的URL 2对应的HTML代码,解析出URLs加入到等待队列中。以此类推,多个线程并发地去完成爬虫工作。

4.2 爬行策略分析

图4.2.1

因为本论文实现的爬虫程序的初衷是尽可能遍历某一站点所有的页面。广度优先算法的实行理论是覆盖更多的节点,所以此爬虫程序选择了广度优先算法。实现的策略是:先获取初始URL对应HTML代码里所有的URLs。然后依次获取这些URLs对应的HTML里的URLs,当这一层所有的URLs都下载解析完后,在获取下一层的信息。通过这种循环的获取方式实现广度优先爬行。

如图4.2.1,假如a代表初始URL,bcd为以a获取的3个URLs,efg为以b获取的URLs,以此类推。那么这些URLs获取的顺序就是abcdefghijklmnop 这样一个顺序。当获取到b的URLs之后,并不会马上去解析这些URLs,而

是先解析同b在同一层中的cd对应的URLs。当这一层URLs全部解析完后,再开始下一层URLs。

广度优先算法的等待队列设计如图4.2.2所示。

图 4.2.2

图4.2.2列举了不同时间段时,URL等待队列的存储状态。第一个方框是将初始URL:a加入到等待队列。第二个方框为,解析a对应HTML获取URLs:bcd,同时删除a。第三个方框为,解析b对应HTML获取URLs:efg,同时删除URL:b。第四个方框为,解析e对应HTML获取URLs:nop,并删除e。通过这样的存储方法实现如图4.2.1的广度爬行算法。

4.3 URL抽取,解析和保存

4.3.1 URL抽取

通过观察研究HTML代码,我们可以知道。HTML代码中,页面之间的跳转,关联是通过href标签来实现的。我们需要获取HTML代码中的URLs,就可以通过寻找href标签来达到目的。

  • 在这个循环里,首先会向URL等待队列里请求一个URL。因为URL队列会出现为空或者被其他线程占用的情况。所以我在这里写了一个循环:s = null;

    while (s == null) {

    s = urlQueueManager.getWaitQueue();

    }

    如果没有得到URL就继续向URL等待队列申请。

    当得到任务URL以后,会通过这个URL得到对应的HTML代码。具体方法是调用getHtml(String sourse_url)这个方法:

    HttpURLConnection connection = null;

    InputStreamReader in = null;

    BufferedReader br = null;

    URL url = null;

    url = new URL(sourse_url);

    connection = (HttpURLConnection)

    url.openConnection();

    connection.connect();

    打开的连接读取的输入流。

    in = new InputStreamReader(url.openStream());

    br = new BufferedReader(in);

    String c;

    while ((c = br.readLine()) != null) {

    false;

    }

    过滤完后的URLs,再判断它为站内URL或者为站外URL。一般情况下同一网站内的URL的host名因该是一致的。所以我们可以通过判断URLs中是否包含站点host就可以了。

    下面的代码是host为的情况。其他情况的代码可以类推。

    true;

    }

    }

    如果为站内URL则加入到缓存队列。

    5.4 URL队列管理

    5.4.1 URL消重处理

    URL消重处理,我是用LRU算法加上MD5压缩算法来实现的。因为URLs 的数量非常巨大,为了节省内存空间。我先通过MD5压缩来得到每个URL对于的一个hash码。这个hash码的长度相对较小,可以节省内存开销。而且产生碰撞的几率非常小,可以忽略不计。

    然后这个URL消重队列的维护是同时LRULinkedHashMap来实现的。这个Map非常好,它总是淘汰重复次数最少的URL。这样就算URL数过大,也可以尽量避免重复下载URL。它的具体构造如下:

    public class LRULinkedHashMap extends LinkedHashMap { private static final long serialVersionUID = 1L;

    private final int maxCapacity;

    private static final float DEFAULT_LOAD_FACTOR = 0.75f;

    private final Lock lock = new ReentrantLock();

    public LRULinkedHashMap(int maxCapacity) {

    super(maxCapacity, DEFAULT_LOAD_FACTOR, true);

    this.maxCapacity = maxCapacity;

    }

    @Override

    protected boolean removeEldestEntry(java.util.Map.Entry eldest) {

    return size() > maxCapacity;

    中小型企业网络规划设计方案

    湖南工业职业技术学院 工程项目实践报告 项目名称:企业网络规划与设计 院(系):信息工程系 专业:计算机网络 班级:s2011-2-22 学生姓名:朱佳才 指导教师:黄晗文 完成时间:2014.3.23

    目录 No table of contents entries found. 一.工程概况 公司有一栋独立大楼,高4层,每层面积2000平方米。由研发技术部(成员60人,分成硬件(25)和软件(35)2大部门)、生产部(主要产品是手持电子产品,110人,管理人员10人)和市场部(30个销售,10个工程师)组成。还有一般企业都有的后勤部门和财务部门等。公司管理层组成:董事会,1个总经理,3个副总经理。3个总监。

    二.需求分析 1. 用户需求 公司网络需求主要有以下几点: (1).1层为市场部和后勤部; 2层为生产部; 3层为研发技术部; 4层为公司内部管理人员办公室和财务部。 (2). 各部门都有各自独立的文件服务器,且文件服务器通常不允许跨部门访问。.但管理层办公室可以访问四个部门的文件服务器。 (3). 公司内部的计算机间采用公司内部的电子邮件系统和IM(即时通讯)系统联系。 (4). 公司内部网络与Interner之间采用10M光纤接入。 (5). 公司内部架设Web服务器,对Internet提供公司的形象和电子商务服务。 (6). 财务部可以访问财务数据服务器,其他部门不能访问财务数据服务器。 (7). 为保证安全,Internet与公司内部网络间应该采用防护措施,防止外界对内部网络未经授权的访问。 (8). 具体要求: WWW服务

    E-mail、FTP服务 集团内行政管理 拨号上网服务 文件服务管理系统 数据库服务 防火墙系统 邮件服务 视频会议系统 2.稳定可靠需求 现代企业的网络应具有更全面的可靠性设计,以实现网络通信的实时畅通,保障企业生产运营的正常进行。随着企业各种业务应用逐渐转移到计算机网络上来,网络通信的无中断运行已经成为保证企业正常生产运营的关键。现代大型企业网络在可靠性设计方面主要应从以下3个方面考虑。 (1)、设备的可靠性设计:不仅要考察网络设备是否实现了关键部件的冗余备份,还要从网络设备整体设计架构、处理引擎种类等多方面去考察。 (2)、业务的可靠性设计:网络设备在故障倒换过程中,是否对业务的正常运行有影响。 (3)、链路的可靠性设计:以太网的链路安全来自于多路径选择,所以在企业网络建设时,要考虑网络设备是否能够提供有效的链路自愈手段,以及快速重路由协议的支持。

    网页制作毕业论文设计

    目录 一引言 (3) 二建设的流程 (3) 三网页制作 (3) (一)制作步骤 (3) (二)常用参数 (4) (三)网页布局 (5) (四)网页色彩 (6) (五)细节的把握 (8) (六)常用工具介绍 (9) 四企业网页制作实例 (9) 五结束语 (10) 参考文献 (11) 致谢词 (12)

    浅谈网页制作 XXX 指导教师:XXX (学院系级专业) 【摘要】网页设计作为用户界面交互设计的延伸,是在新的媒体和新的技术支持下实现一个全新的设计创作领域。设计创作网页应遵循其特有的特点和结构思路,具备实际可行性和外观的时尚。本论文讲述了建设的一般步骤,并结合丰富的色彩应用与网页设计理论,通过网页制作实例,阐述了网页设计的视觉效果和具体操作。 关键词网页色彩建设布局 Discusses about the homepage design XXX Instructor:XXX (Management Department of E-commerce in 200X) 【Abstract】The homepage design which is used to be the extending of user interface designing,it is realizes a brand-new design creation field in new media and under the new technical support. Design creation homepage should follow the homepage its unique background characteristic and the structure mentality,it has actual feasible and the outward appearance fashion. The article talk about the general step of

    毕设开题报告-及开题报告分析

    开题报告如何写 注意点 1.一、对指导教师下达的课题任务的学习与理解 这部分主要是阐述做本课题的重要意义 2.二、阅读文献资料进行调研的综述 这部分就是对课题相关的研究的综述落脚于本课题解决了那些关键问题 3.三、根据任务书的任务及文件调研结果,初步拟定执行实施的方案(含具体进度计划) 这部分重点写具体实现的技术路线方案的具体实施方法和步骤了,具体进度计划只是附在后面的东西不是重点

    南京邮电大学通达学院毕业设计(论文)开题报告

    文献[5] 基于信息数据分析的微博研究综述[J];研究微博信息数据的分析,在这类研究中,大多数以微博消息传播的三大构件---微博消息、用户、用户关系为研究对象。以微博消息传播和微博成员组织为主要研究内容,目的在于发祥微博中用户、消息传博、热点话题、用户关系网络等的规律。基于微博信息数据分析的研究近年来在国内外都取得了很多成果,掌握了微博中的大量特征。该文献从微博消息传播三大构件的角度,对当前基于信息数据分析的微博研究进行系统梳理,提出微博信息传播三大构件的概念,归纳了此类研究的主要研究内容及方法。 对于大多用户提出的与主题或领域相关的查询需求,传统的通用搜索引擎往往不能提供令人满意的结果网页。为了克服通用搜索引擎的以上不足,提出了面向主题的聚焦爬虫的研究。文献[6]综述了聚焦爬虫技术的研究。其中介绍并分析了聚焦爬虫中的关键技术:抓取目标定义与描述,网页分析算法和网页分析策略,并根据网络拓扑、网页数据内容、用户行为等方面将各种网页分析算法做了分类和比较。聚焦爬虫能够克服通用爬虫的不足之处。 文献[7]首先介绍了网络爬虫工作原理,传统网络爬虫的实现过程,并对网络爬虫中使用的关键技术进行了研究,包括网页搜索策略、URL去重算法、网页分析技术、更新策略等。然后针对微博的特点和Ajax技术的实现方法,指出传统网络爬虫的不足,以及信息抓取的技术难点,深入分析了现有的基于Ajax的网络爬虫的最新技术——通过模拟浏览器行为,触发JavaScript事件(如click, onmouseo ver等),解析JavaScript脚本,动态更新网页DOM树,抽取网页中的有效信息。最后,详细论述了面向SNS网络爬虫系统的设计方案,整体构架,以及各功能模块的具体实现。面向微博的网络爬虫系统的实现是以新浪微博作为抓取的目标网站。结合新浪微博网页的特点,通过模拟用户行为,解析JavaSc ript,建立DOM树来获取网页动态信息,并按照一定的规则提取出网页中的URL和有效信息,并将有效信息存入数据库。本系统成功的实现了基于Ajax技术的网页信息的提取。 文献[8]引入网页页面分析技术和主题相关性分析技术,解决各大网站微博相继提供了抓取微博的API,这些API都有访问次数的限制,无法满足获取大量微博数据的要求,同时抓取的数据往往很杂乱的问题。展开基于主题的微博网页爬虫的研究与设计。本文的主要工作有研究分析网页页面分析技术,根据微博页面特点选择微博页面信息获取方法;重点描述基于“剪枝”的广度优先搜索策略的思考以及设计的详细过程,着重解决URL的去重、URL地址集合动态变化等问题;研究分析短文本主题抽取技术以及多关键匹配技术,确定微博主题相关性分析的设计方案;最后设计实现基于主题的微博网页爬虫的原型系统,实时抓取和存储微博数据。本文研究的核心问题是,根据微博数据的特点设计一种基于“剪枝”的广度优先搜索策略,并将其应用到微博爬虫中;同时使用微博页面分析技术使得爬虫不受微博平台API限制,从而让用户尽可能准确地抓取主题相关的微博数据。通过多次反复实验获取原型系统实验结果,将实验结果同基于API微博爬虫和基于网页微博爬虫的抓取效果进行对比分析得出结论:本文提出的爬行策略能够抓取主题相关的微博数据,虽然在效率上有所降低,但在抓取的微博数据具有较好的主题相关性。这实验结果证明本论文研究的实现方案是可行的。 文献[9]阐述了基于ajax的web应用程序的爬虫和用户界面状态改变的动态分析的过程和思路。文献[10]对于全球社交网络Twitter,设计并实现了,一个爬虫系统,从另一个角度阐明了Python在编写爬虫这个方面的强大和快速。仅仅用少量的代码就能实现爬虫系统,并且再强大的社交网站也可

    网络推广毕业设计

    目录 1.引言 (1) 2.企业网站推广的目的 (1) 3.网络推广对于企业的意义 (2) 4.网络推广比传统媒体的优势 (2) 4.1传播范围广 (2) 4.2交互性强 (2) 4.3针对性明确 (2) 4.4受众数量可准确统计 (3) 4.5灵活、成本低 (3) 4.6感官性强 (3) 5.网络推广的重要性 (3) 5.1网络推广为网站打造更高的知名度 (4) 5.2网络推广为网站信息以及服务牵线搭桥 (4) 5.3网络推广为网站树立品牌价值 (4) 6.如何进行网络推广 (5) 7.网络推广的前景 (9) 毕业总结 (9) 参考文献: (10)

    1.引言 网络推广就是利用互联网进行宣传推广活动。被推广对象可以是企业、产品、政府以及个人等等。根据有关数据显示2009调查中国93%的企业没有尝试过网络推广,而在国外发达国家只有16%的企业。这一调查研究表示中国互联网还处于萌芽阶段。 广义上讲,企业从开始申请域名、租用空间、建立网站开始就算是介入了网络推广活动,而通常我们所指的网络推广是指通过互联网手段进行的宣传推广等活动。 狭义地说,网络推广的载体是互联网,离开了互联网的推广就不能算是网络推广。而且利用互联网必须是进行推广,而不是做其他的事情。 另外一个容易模糊的概念是网站推广。网站推广为网络营销极其重要的一部分,因为网站是网络的主体。因此很多网络推广都包含着网站推广。当然网络推广也还进行非网站的推广,例如线下的产品、公司等等。这两个概念容易混淆是因为网络推广活动贯穿于网站的生命周期,从网站策划、建设、推广、反馈等网站存在的一系列环节中都涉及到了网络推广活动。 网络广告则是网络推广所采用的一种手段。除了网络广告以外,网络推广还可以利用搜索引擎、友情链接、网络新闻炒作等方法来进行推广。 随着互联网的迅速发展,网民将会越来越多,因此网络的影响力也将会越来越大。 如果不希望在互联网上做一个信息孤岛,就需要有效实现网络宣传。对企业而言,做好网络推广,可以带来经济效益;对个人而言,可以让更多人了解自己,认识更多的朋友。 2企业网站推广的目的 网站推广的目的在于让尽可能多的潜在用户了解并访问网站,通过网站获得有关产品和服务等信息,为最终形成购买决策提供支持。网站推广需要借助于一定的网络工具和资源,常用的网站推广工具和资源包括搜索引擎、分类目录、电子邮件、网站链接、在线黄页和分类广告、电子书、免费软件、网络广告媒体、传统推广渠道等。所有的网站推广方法实际上都是对某种网站推广手段和工具的合理利用,因此制定和实施有效的网站推广方法的基础是对各种网站推广工具和

    中小型园区网的设计与实现-毕业论文-终稿

    目录 第一章企业网建设综述 (4) 1.1 项目建设目标 (4) 1.2 项目建设原则 (4) 1.3 基本建设描述 (5) 第二章需求分析 (5) 2.1 企业背景 (5) 2.2 网络规划 (6) 2.3 计算机网络综合布线 (7) 2.4 网络拓扑结构 (7) 2.4.1网络拓扑结构示意图 (7) 2.4.2网络中心组建 (8) 2.4.3生产车间网络组建 (9) 2.4.4企业各部门IP分配表 (9) 第三章网络设备的配置和管理 (11) 3.1 划分子网 (12) 3.2 划分VLAN的方法 (13) 3.2.1什么是VLAN (13)

    3.2.2 VLAN划分的几点好处 (14) 3.2.3设置VLAN的常用方法 (14) 3.3 端口配置及划分VLAN (15) 3.3.1汇聚层交换机FLOOR1_HJ连接及配置说明 (15) 3.3.2汇聚层交换机FLOOR2_HJ连接及配置说明 (17) 3.3.3汇聚层交换机FLOOR3_HJ连接及配置说明 (19) 3.3.4汇聚层交换机FLOOR4_HJ连接及配置说明 (21) 3.3.5汇聚层交换机FLOOR5_HJ连接及配置说明 (22) 3.3.6核心层交换机CORE连接及配置说明 (24) 3.5 配置静态路由 (25) 3.6 连接广域网 (27) 3.7 网络安全控制及管理 (30) 第四章企业网组建方案总结 (30) 参考文献 (32)

    中小型园区网的设计与实现 前言 计算机网络特别是INTERNET的产生和发展在现代科技技术史上具有划时代的意义和影响,计算机网络的飞速发展日新月异,计算机网络彻底改变了人们的工作方式和生活方式,改变了企事业单位的运营和管理模式。 在现今的网络建设中,中小型园区网的建设是非常重要和普遍的,如:校园网和企业网。园区网经历了从早期简单的数据共享到现在园区网内部全方位、高速度、多种类应用的共享及服务的转变。下面就以某企业的实际情况,设计一个可以正常运行的园区网,并对建成的网络进行优化,采用多种手段对网络进行优化是网络组建成果的重要组成部分,缺少优化的网络就算硬件配置在高,还是不能把网络资源充分利用。安全和稳定的运行是企业网追求的终极目标。 第一章企业网建设综述 1.1 项目建设目标 建设分层的交换式以太网络,对建成企业网络进行优化,使其得到充分的利用。

    网页设计毕业论文题目

    网页设计毕业论文题目 很多同学在写网页设计毕业论文的时候不知道从哪里入手,可以看看我们搜集的网页设计毕业论文题目,也许会对你有帮助。网页设计毕业论文题目一: [1]李卓。网页设计中的认知心理学与艺术设计理念。吉林大学,2005. [2]张思望。网页设计中视觉元素的功能与审美性研究。西北大学,2006. [3]张春立。研究性学习在中等职业学校《网页设计制作》课程中的实施。首都师范大学,2005. [4]范翠丽。教育网站中页面的艺术设计。山东师范大学,2005. [5]吴莎莎。基于设计指南的网页可用性分析工具研究。大连海事大学,2006. [6]刘杰。针对网页设计的用户视觉搜索能力研究。清华大学,2005. [7]刘丹。网页设计中的Flash动画视觉语言研究。合肥工业大学,2006. [8]廖晔。网页界面设计及其学科相关性研究。湖南师范大学,2006. [9]何丽萍。基于网页设计的视觉信息传达有效性的研究。浙江大学,2006. [10]杜大龙。网页艺术设计的基本因素研究。吉林大学,2006. [11]朱世根。学习理论在教学网页设计中的应用研究。江西师范大学,2005. [12]朱松岩。现代网页设计与印刷类平面设计比较研究。苏州大学,2006. [13]王静。酒店网页设计的文化差异及其启示。上海外国语大学,2007. [14]倪冰。基于项目的学习理论在课程教学中应用的研究。华东师范大学,2007. [15]杨飞飞。网页设计中的动感形态研究。南京艺术学院,2007. [16]白珊。网页设计中图片与文字互动关系的研究。北京印刷学院,2008. [17]常海霞。Flash动画在网页设计中的互动性研究。西北大学,2008. [18]郭安。从韩国网页设计看网页艺术设计的视觉呈现。武汉理工大学,2008. [19]杨旭兰。色彩在网页设计中的应用研究。南京林业大学,2009. [20]李晓蕙。网页游戏中界面设计的研究和应用。上海交通大学,2008. [21]聂璐。论网页界面设计中的人性化因素。湖南师范大学,2010. [22]丁文洁。基于SMIL技术的网站视觉无障碍优化研究。上海交通大学,2010. [23]乔柳。网页界面设计中的信息图形化研究。上海交通大学,2010. [24]聂英。网页设计中信息传达的人性化探究。西北师范大学,2015. [25]罗婧瑄。极简主义在扁平化风格网页设计中的应用与研究。西北师范大学,2015. [26]李美林。基于感性工学的网页界面优化设计研究。东北大学,2014. [27]田梦琦。基于用户体验的网页交互设计研究。湖北工业大学,2016. [28]张乃恒。网页界面设计风格多样化研究。东南大学,2015. [29]金泠泠。数字技术与设计美学的博弈。中国美术学院,2008. [30]董海斌。平面视觉元素在网页设计中的应用研究。西安理工大学,2008. [31]许娟。任务驱动教学模式在艺术设计专业网页设计教学中的应用研究。南京艺术学院,2008. [32]康康。论网页设计课程的教学设计。南京艺术学院,2008. [33]李双。基于用户思维模型分析的网页可用性设计研究。江南大学,2008. [34]李多。网页的视觉传达与设计表现研究。河南大学,2009. [35]张烨烨。网页版式设计研究。东北师范大学,2009. [36]张莹莹。网页设计中的交互特性。中央美术学院,2009. [37]赵鑫。项目教学法在高职《网页设计与制作》课程教学中的应用。华中师范大学,2009. [38]温婷婷。网页版式语言及应用设计研究。东北师范大学,2010. [39]刘利华。网页设计中视觉元素的运用研究。湖南师范大学,2009.

    网络爬虫外文翻译

    外文资料 ABSTRACT Crawling the web is deceptively simple: the basic algorithm is (a)Fetch a page (b) Parse it to extract all linked URLs (c) For all the URLs not seen before, repeat (a)–(c). However, the size of the web (estimated at over 4 billion pages) and its rate of change (estimated at 7% per week) move this plan from a trivial programming exercise to a serious algorithmic and system design challenge. Indeed, these two factors alone imply that for a reasonably fresh and complete crawl of the web, step (a) must be executed about a thousand times per second, and thus the membership test (c) must be done well over ten thousand times per second against a set too large to store in main memory. This requires a distributed architecture, which further complicates the membership test. A crucial way to speed up the test is to cache, that is, to store in main memory a (dynamic) subset of the “seen” URLs. The main goal of this paper is to carefully investigate several URL caching techniques for web crawling. We consider both practical algorithms: random replacement, static cache, LRU, and CLOCK, and theoretical limits: clairvoyant caching and infinite cache. We performed about 1,800 simulations using these algorithms with various cache sizes, using actual log data extracted from a massive 33 day web crawl that issued over one billion HTTP requests. Our main conclusion is that caching is very effective – in our setup, a cache of roughly 50,000 entries can achieve a hit rate of almost 80%. Interestingly, this cache size falls at a critical point: a substantially smaller cache is much less effective while a substantially larger cache brings little additional benefit. We conjecture that such critical points are inherent to our problem and venture an explanation for this phenomenon. 1. INTRODUCTION A recent Pew Foundation study [31] states that “Search eng ines have become an indispensable utility for Internet users” and estimates that as of mid-2002, slightly

    计算机专业毕业设计题目大全

    计算机毕业设计题目大全安卓/Android题目大全: 安卓001个人事务管理系统 安卓002手机订餐系统 安卓003无线点菜 安卓004酒店房间预定系统? 安卓005个人相册管理系统 安卓006计算器 安卓007英语学习 安卓008绘图软件 安卓009医疗健康查询系统 安卓010健身信息管理系统 安卓011课程表 安卓012音乐播放器 安卓013便民自行车管理 安卓014点餐系统SQL版 安卓015二手图书交易系统 安卓016公交查询线路 安卓017订餐管理系统 安卓018校园闲置物品交易平台 安卓019电子书阅读器 安卓020蔬菜水果销售系统 安卓021网上商店系统 安卓022消费导航系统 安卓023GPS移动定位及运行轨迹管理系统 安卓024基于安卓系统的数据传输wifi 安卓025基于蓝牙的手机好友发现系统 安卓026学英语智力游戏 安卓027电子书阅读器(两个版本) 安卓028短信管理 安卓029音乐播放器 安卓030旅游记忆系统

    安卓031教师教学信息查询系统 安卓032个人信息管理系统 安卓033基于Android的公路客运售票管理系统安卓034基于Android的英文词典的设计与实现安卓035同学通讯录 安卓036安卓仓库管理系统(单机) 安卓037电子词典的设计与实现 安卓038二维码识别系统的研究与实现 安卓039任务管理器的设计与实现 安卓040手机防火墙 安卓041邮件收发Email 安卓042计算器 安卓043绘图软件设计与实现 安卓044俄罗斯方块系统 安卓045网上商店系统设计与开发 安卓046消费导航系统设计与实现 安卓047记事本 安卓048拼图游戏的设计与实现 安卓049南京旅游 安卓050公交查询线路 安卓051打飞机游戏 安卓052建筑连连看 安卓053扫雷程序 安卓054视频播放器 安卓055多功能日历 安卓056图书借阅系统 安卓057天气预报 安卓058人体健康监测软件 安卓059天气预报 安卓060实习登记系统 安卓061五子棋 安卓062餐厅点餐订餐系统 安卓063心理测试 安卓064手机理财软件 安卓065音频编辑器 安卓066相册图片浏览器 安卓067手机校园信息系统

    企业网络规划与设计(H3C)

    毕业设计(论文) 企业网络规划与设计 系别:计算机信息工程系 专业名称:计算机网络技术 学生姓名: 指导教师姓名: 完成日期 xxxx年xx月 xx 日

    毕业设计论文摘要 随着Internet技术的日益普及,网络技术的飞速发展,企业信息化工作越来越受到重视,进入二十一世纪后,企业信息化不再满足于个人或单个部门的少量计算机应用,而逐步过渡到多部门、整个企业甚至跨企业跨地域的大量计算机的协同工作,因此我们需要把这些计算机用网络联系起来,这也就是我们所说的企业网。本文是对某IT企业的一个企业网络规划设计的解决方案,文章首先分析了企业网络的设计需求,根据需求提出了设计原则与设计目标,制定了总体的规划设计方案,然后再分层次具体地对该企业的局域网和广域网进行设计,在该方案中,我们采用了VLAN、三层交换、千兆交换等先进网络技术,基本满足了该企业的需求,并留有足够的扩充空间,以适应今后发展。 关键词企业网络规划设计 VLAN

    目录 1 引言 (2) 2 概述 (4) 2.1企业概况分析 (5) 2.2企业网络设计需求分析 (5) 3网络总体规划 (6) 3.1企业网络设计目标 (6) 3.2企业网络设计原则 (6) 3.3网络设计相关协议说明 (7) 4网络具体规划与设计 (9) 4.1企业网络拓扑结构设计 (9) 4.2 应用到的五个技术 (10) 4.3设备选型 (16) 致谢 (19) 参考文献 (20)

    1 引言 目前,对于国内的部分企业而言,计算机技术的应用很大程度上还只是停留在单机应用的水平上,应用软件也只是办公软件和简单的数据库应用。但是,随着计算机网络技术不断发展与普及、企业信息化的逐步深入和企业自身发展需求日益增大,在充分利用现有资源、不需要很大投资的基础上,构建适合自身情况、满足实际需求的网络系统是非常必要的,也是切实可行的 社会进入信息时代后,要求企业用信息技术来强化企业的管理、生产和经营,而企业要创造更多的经济效益就必须借助信息技术来提高企业的生产效率和管理水平,这不但适用于大型企业,对占相当比重的中小企业同样适用。网络技术的发展使得网络建设从基础架构到维护和管理都变得十分简单和智能,丰富的网络产品线和不断降低的价格,可以让中小企业根据自身的情况,按照实际的经济条件来构建自己的网络,用于网络建设的投资对于企业而言不再成为一个负担。各自为战的单机应用逐步暴露出现有资源利用率低、信息冗余大等问题,而解决这些问题的惟一途径就是建设一个满足应用需求的网络系统来实现资源的共享。一个成功的企业不仅要了解世界,还要让世界知道自己。实现这个目标的最佳途径就是要利用Internet。通过Internet,企业不仅可以获得大量的有价值的信息,同时也可以将企业的信息通过Internet发布到世界各地。 因此,企业进行计算机网络的建设,不仅是信息社会发展的要求,也是自身发展所必须的。 2 概述 企业网络指的是具有一定规模的网络系统,它可以是单座建筑物内的局域网,可以是覆盖一个园区的园区网,还可以是跨地区的广域网,其覆盖范围可以是几公里、几十公里、几百公里,甚至更广。狭义的企业网主要指大型的工业、商业、金融、交通企业等各类公司和企业的计算机网络;广义的企业网则包括各种科研、教育部门和政府部门专有的信息网络。 我国的企业网络建设经过了单机应用阶段,目前正处在Internet应用热潮中。但从目前情况看国内相当多的企业还处于网络初步应用阶段,其具有以下特点:1应用水平较低,分散且不一致。企业网络缺乏整体性的设计,没有统一的标准,在业务互相衔接的应用系统之间缺乏一致性;2应用者的整体水平比较低,缺乏对计算机和

    中小型网络设计与规划毕业论文

    毕业设计(论文) 论文题目:中小型网络设计与规划 学习中心(或办学单位): 学生姓名:学号: 专业:计算机科学与技术 2015年3月20日

    毕业设计(论文)任务书题目:中小型网络设计与规划 任务与要求: 为企业规划内部网络,设计出稳定可靠的网络。 时间: 2014 年 12月 22 日至 2015 年 3月 22 日共 12 周学习中心:(或办学单位) 学生姓名:学号: 专业:计算机科学与技术 指导单位或教研室:电子科技大学远程教育深圳学习中心 2015年3月10日

    毕业设计(论文)进度计划表

    本表作评定学生平时成绩的依据之一。 摘要 迅速发展的互联网正在对全世界的信息产业带来巨大的变革和深远的影响。国内越来越多的企业也已经或正在考虑使用网络技术,以建设企业规划化的信息处理系统。通过互联网与外部世界交换信息,本企业与全世界联系起来,极大地提高了信息收集的能力和效率。 随着信息时代的到来,计算机和通信在信息的收集、存储、处理、传愉和分发中扮演了极其重要的角色。计算机网络综合了计算机软、硬件及通信等多方面的技术,涉及面宽,应用范围广。计算机网络就是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统互连起来。 企业内部网是国际互连网技术在企业内部或封闭的用户群内的应用。简单地说,互联网是使用互联网技术,特别是TCP/IP协议而建成的企业内部网络。这种技术允许不同计算机平台进行互通,且不用考虑其位置。也就是所说的用户可以对任何一台进行访问或从任何一台计算机进行访问。 随着互联网技术的不断发展,计算机已经逐渐应用到企业中的各个关键部分,极大的提高了企业的工作效率。 关键词:计算机网络;互联网;企业内部网;

    简析网络语言的文献综述

    浅析网络语言的文献综述 摘要 语言是一种文化,一个民族要有文化前途,靠的是创新。从这个意义上说,新词语用过了些并不可怕,如果语言僵化,词汇贫乏,那才是真正的可悲。语汇系统如果只有基本词,永远稳稳当当,语言就没有生命力可言,因此,在规定一定的规范的同时,要允许歧疑的存在,但更要积极吸收那些脱离当时的规范而能促进语言的丰富和发展的成分。正确看待网络语言。 关键字 网络语言;因素;发展趋势; 一、关于“网络语言”涵义及现状的研究 1.网络语言的涵义研究 网络语言是一个有着多种理解的概念,既可以指称网络特有的言语表达方式,也可以指网络中使用的自然语言,还可以把网络中使用的所有符号全部包括在内。网络语言起初多指网络语言的研究现状(网络的计算机语言,又指网络上使用的有自己特点的自然语言。于根元,2001)。 较早开展网络语言研究的劲松、麒可(2000)认为,广义的网络语言是与网络时代、e时代出现的与网络和电子技术有关的“另类语言”;狭义的网络语言指自称网民、特称网虫的语言。 周洪波(2001)则认为,网络语言是指人们在网络交流中所使用的语言形式,大体上可分为三类:一是与网络有关的专业术语;二是与网络有关的特别用语;三是网民在聊天室和BBS上的常用词语。 于根元(2003)指出,“网络语言”本身也是一个网络用语。起初多指网络的计算机语言,也指网络上使用的有自己特点的自然语言。现在一般指后者。狭义的网络语言指论坛和聊天室的具有特点的用语。 何洪峰(2003)进一步指出,网络语言是指媒体所使用的语言,其基本词汇及语法结构形式还是全民使用的现代汉语,这是它的主体形式;二是指IT领域的专业用语,或是指与电子计算机联网或网络活动相关的名词术语;其三,狭义上是指网民所创造的一些特殊的信息符号。总的看来,研究者基本认为网络语言有广义、狭义两种含义,广义的网络语言主要指与网络有关的专业术语,狭义的网络语言主要指在聊天室和BBS上常用的词语和符号。 2. 网络语言的研究现状 如:国人大常委会委员原国家教委副主任柳斌表示,网络语言的混乱,是对汉语纯洁性的破坏,语言文字工作者应对此类现象加以引导和批评。国家网络工程委会副秘书史自文表示,老师要引导学生使用网络语言。比如说在写出作文的时候,可以针对彩简单的网络语言还是用含义更有韵味的唐诗更好做一个主题研讨会,和学生一起探讨。这样就可以在理解、尊重学生的基础上进行引导。经过这样的过程,学生对于用何种语言形式多了一个选择,又加深了对传统文化的理解。 如:北京教科院基教所研究员王晓春表示,在网络世界里用网络语言无可厚非。但在正式场合要引导学生不使用网络语言。在教学中老师要引导学生如何正

    JAVA基于网络爬虫的搜索引擎设计与实现

    本科毕业设计 题目:基于网络爬虫的搜索引擎设计与实现 系别: 专业:计算机科学与技术 班级: 学号: 姓名: 同组人: 指导教师:教师职称:协助指导教师:教师职称:

    摘要 本文从搜索引擎的应用出发,探讨了网络蜘蛛在搜索引擎中的作用和地住,提出了网络蜘蛛的功能和设计要求。在对网络蜘蛛系统结构和工作原理所作分析的基础上,研究了页面爬取、解析等策略和算法,并使用Java实现了一个网络蜘蛛的程序,对其运行结果做了分析。 关键字:爬虫、搜索引擎

    Abstract The paper,discussing from the application of the search engine,searches the importance and function of Web spider in the search engine.and puts forward its demand of function and design.On the base of analyzing Web Spider’s system strtucture and working elements.this paper also researches the method and strategy of multithreading scheduler,Web page crawling and HTML parsing.And then.a program of web page crawling based on Java is applied and analyzed. Keyword: spider, search engine

    (完整版)企业网络规划与设计毕业设计论文

    摘要 1.综合布线系统是一套用于建筑物内或建筑群之间为计算机、通信设 施与监控系统预先设置的信息传输通道。本文就综合布线的发展历 程、经济性能的浅析、工程设计原理、综合布线中电磁干扰问题以 及我国的相关验收标准做出了简要的阐述,并以一个工程实例,给 出了一个综合布线系统工程设计的方案。 关键字:局域网设计规划拓扑结构网络设备清单局域网管理

    毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: - 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

    学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日

    HTML网页设计毕业论文

    毕业论文 网站设计与制作 所属系:计算机 专业:应用技术 学生姓名:*** 学号:************ 指导老师:**** 二〇一一年五月 第1章网站总体分析及概要设计 1.1 模块功能分析 1.1.1 引导首页模块 引导首页使用整体颜色背景,配合图片或Flash构成,顶部为导航首页链接。 1.1.2 班级形象模块 该模块功能主要是展示班级的形象,同时作为网站的导航首页,在用户登录后就可以看到班级的整体形象,班级的展示及班级动态,用户还可以通过顶部和左侧的导航栏进入网站,更深入的了解该班级。 1.1.3 用户模块 用户注册与登录:网络上的用户通过填写ID、密码等信息可以注册成为会员,并获得相应的用户权限。系统自动把用户的注册信息存储到服务器端的数据库中。如果用户ID重复或者填写错误,系统会给出提示信息,而通过用户注册与登录、可以自由发布与查看各种信息。用户信息维护:系统的注册用户可以随时修改自己的注册信息,这些修改后的信息将自动更新到服务器端的数据库中。 用户登录/退出:系统的注册用户可以登录系统并且获得相应的权限,登录了的用户也可以选择退出登录。 1.1.4 留言板模块 该模块功能主要是提供用户与网站主之间的交流平台及站长收集用户反馈信息以改善站点。 1.2 网站导航功能结构 网站主要实现的功能有:网站首页导航,各页面导航以及其他模块。 1.3 论文可行性分析 1.3.1 社会可行性分析 可行性分析主要分析现有技术条件能否顺利完成开发工作,软硬件配置能否满足开发者的需要等。随着计算机硬件和软件技术的飞速发展,为网站的建设提供了有利的技术条件,由此看来技术基础也已非常成熟,因而技术上是可行的。 1.3.2 软件可行性分析 1.3. 2.1 ASP技术介绍 ASP(Active Server pages)即“动态服务器网页”,ASP之所以能受到大家的重视与使用的原因,只要在于脚本在服务器上而不是在客户端运行,传送到浏览器上的Web页是在Web服务器上生成的。所以不必担心浏览器能否处理脚本,Web服务器已经完成了所有脚本的处理,并肩标准的HTML传输到浏览器。由于只有脚本的结果返回到浏览器,所有服务器端脚本不易复制。用户看不到创建他们正在浏览的页的脚本命令。所以在客户端看到的只能是经过解析之后的数据,而无法获得源代码,故编写者不用担心自己的代码会被别人剽窃。ASP的主要特点:容易产生,无需Compile变异或Link链接即可执行,集成于HTML中,使

    搜索引擎爬虫外文翻译文献

    搜索引擎爬虫外文翻译文献 (文档含中英文对照即英文原文和中文翻译) 译文: 探索搜索引擎爬虫 随着网络难以想象的急剧扩张,从Web中提取知识逐渐成为一种受欢迎的途径。这是由于网络的便利和丰富的信息。通常需要使用基于网络爬行的搜索引擎来找到我们需要的网页。本文描述了搜索引擎的基本工作任务。概述了搜索引擎与网络爬虫之间的联系。 关键词:爬行,集中爬行,网络爬虫 1.导言 在网络上WWW是一种服务,驻留在链接到互联网的电脑上,并允许最终用户访问是用标准的接口软件的计算机中的存储数据。万维网是获取访问网络信息的宇

    宙,是人类知识的体现。 搜索引擎是一个计算机程序,它能够从网上搜索并扫描特定的关键字,尤其是商业服务,返回的它们发现的资料清单,抓取搜索引擎数据库的信息主要通过接收想要发表自己作品的作家的清单或者通过“网络爬虫”、“蜘蛛”或“机器人”漫游互联网捕捉他们访问过的页面的相关链接和信息。 网络爬虫是一个能够自动获取万维网的信息程序。网页检索是一个重要的研究课题。爬虫是软件组件,它访问网络中的树结构,按照一定的策略,搜索并收集当地库中检索对象。 本文的其余部分组织如下:第二节中,我们解释了Web爬虫背景细节。在第3节中,我们讨论爬虫的类型,在第4节中我们将介绍网络爬虫的工作原理。在第5节,我们搭建两个网络爬虫的先进技术。在第6节我们讨论如何挑选更有趣的问题。 2.调查网络爬虫 网络爬虫几乎同网络本身一样古老。第一个网络爬虫,马修格雷浏览者,写于1993年春天,大约正好与首次发布的OCSA Mosaic网络同时发布。在最初的两次万维网会议上发表了许多关于网络爬虫的文章。然而,在当时,网络i现在要小到三到四个数量级,所以这些系统没有处理好当今网络中一次爬网固有的缩放问题。 显然,所有常用的搜索引擎使用的爬网程序必须扩展到网络的实质性部分。但是,由于搜索引擎是一项竞争性质的业务,这些抓取的设计并没有公开描述。有两个明显的例外:股沟履带式和网络档案履带式。不幸的是,说明这些文献中的爬虫程序是太简洁以至于能够进行重复。 原谷歌爬虫(在斯坦福大学开发的)组件包括五个功能不同的运行流程。服务器进程读取一个URL出来然后通过履带式转发到多个进程。每个履带进程运行在不同的机器,是单线程的,使用异步I/O采用并行的模式从最多300个网站来抓取数据。爬虫传输下载的页面到一个能进行网页压缩和存储的存储服务器进程。然后这些页面由一个索引进程进行解读,从HTML页面中提取链接并将他们保存到不同的磁盘文件中。一个URL解析器进程读取链接文件,并将相对的网址进行存储,并保存了完整的URL到磁盘文件然后就可以进行读取了。通常情况下,因

    定向网络爬虫 开题报告

    山东科技大学 本科毕业设计(论文)开题报告 题目网络爬虫 定向爬取?脚本之家?文本信息 学院名称信息科学与工程学院 专业班级计算机科学与技术2012级2班 学生姓名包志英 学号 201201050201 指导教师赵中英 填表时间:二0一六年三月二十八日

    下,并不能很稳定的工作,内存消耗随着程序的运行而不断增大,直到达到jvm 分配的上限而崩溃。很多时候,你只能做个权衡,每个webclient使用若干次后就把它回收,然后重新启动一个,这非常影响性能。Rhino对于javascript的支持并不好,实际使用中,会发现各种Exception,很多时候会导致无法渲染出想要的结果,这个htmlunit的又一大缺陷。随着版本的更新,能够渐次解决一些问题,但是好的程序员,还是应该自己读源码来尝试解决问题。 Phantomjs相比于htmlunit,对于js的支持更接近真实的浏览器,但是并发性能差,通过java的exec调用系统命令来启动,更加降低了性能。 此外主流的浏览器都提供了相应的抓取支持,selenium可谓是一个集大成者,包含了上述的所有组件,以WebDriver的形式,适配各种爬虫组件,你可以用它操控浏览器自动抓取,当然,并发和性能的问题依然存在。 爬虫开发的主要问题是性能和反封锁。很多时候,采用高并发高频率抓取数据是可行的,前提是目标站点没有采用任何反爬措施(访问频率限制、防火墙、验证码……);更多时候,有价值的信息,一定伴随着严格的反爬措施,一旦ip 被封,什么组件都没戏了。你不得不维护一个代理IP池来解决这个问题,当然,这也带来了代理ip稳定性和速度的问题,这些问题都是无法回避的问题,我们需要针对具体的情况,采用对应的措施,以最大限度的完成爬虫爬取任务。 目前,爬虫的需求呈爆炸式增长的趋势,这是当前各种互联网创新和大数据时代的新常态。火车和八爪鱼等团队看到了这一点,并率先开发了相对完备的爬虫产品,很多用户都在使用,但是更多的用户希望直接把爬虫抓取任务外包出去,因为他们不懂技术,工具的使用需要逾越技术的鸿沟,大部分用户并没有这个逾越鸿沟的打算。我相信像猪八戒这样的技术外包平台会活的越来越好,我也相信各个技术门类会不断聚集,形成相对独立的社区,P2P的社区平台将提供爬虫开发者和爬虫需求者更加通畅的交流渠道。 目前,淘宝等平台上出现很多爬虫服务商,如 https://www.360docs.net/doc/a65639260.html,/item.htm?spm=a230r.1.14.4.10ZOWj&id=42659198536 &ns=1&abbucket=6#detail,这种定制开发的服务,增加了服务商的成本,服务往往是一次性的,满足了一个用户的需求,然而具有相似需求的用户,却很难有机会找到这个服务商,这就是为什么我们需要爬虫信息交流的平台。

  • 相关文档
    最新文档