优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

面向电子商务网站的专业网络爬虫设计

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

摘   要
    网络爬虫是一个自动下载网页的程序,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到该URL对列为空为止。
    本文设计的这款面向电子商务网站的专业网络爬虫,只对电子商务网站进行信息搜索,让用户可以尽可能多的找到自己关心的商品信息。面向电子商务网站的专业网络爬虫的工作流程十分复杂,需要根据一定的网页分析过滤与电子商务商品信息无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到保存URL的队列为空为止。另外,所有被爬虫抓取的网页将会被系统存贮。
    文章在分析网络爬虫的工作原理的基础上,结合多线程技术,设计了这个网络爬虫程序。 think58好,好think58 [版权所有:http://think58.com]

关键字:搜索引擎,网络爬虫,电子商务
搜索引擎的性能指标
衡量搜索引擎的指标主要有查全率与查准率,收录信息的范围,搜索引擎的响应时间,内容的更新速度,反馈的查询结果错误率等。
查全率与查准率:为了对现有的搜索引擎进行分析、对比与评价,我必须首先了解有哪些评价搜索引擎的技术指标[6]:
(1)查全率(Recall)。查全率是指相关文件与总相关文件的比率。即用户通过搜索引擎所获取的有用信息与整个Internet中相关信息的比率,即:
查全率=(检索出的相关信息量/系统中的相关信息总量)*100%
(2)查准率(Precision)。查准率是指获取的相关文件与获取总文件的比率。即用户通过搜索引擎所获取的信息中真正是用户需要的信息占总共获取信息的比率,即:
查准率=(检索出的相关信息量/检索出的信息总量)*100%
例如:假设整个 Internet是一个大的数据库,其中有关“搜索引擎”的信息有100个,用户以“搜索引擎”为关键字在某个搜索引擎查询到的信息有50个,但真正符合用户需要的只有30个。那 么 有 :查全率 = 50/100=0.5,查准率=30/50=0.6。查全率与查准率是一对矛盾体,当它们的值达到一定时,查全率高必然降低查准率,反之亦然。评价一个搜索引擎时,应以该搜索引擎所服务的主要用户的需求特点为准。值得注意的是,无论是强调查全率还是强调查准率,搜索引擎都不能忽视网络上重要的、新的相关内容。 copyright think58 [资料来源:THINK58.com]
    搜索引擎收录信息的范围:搜索引擎收录信息的范围即信息的覆盖范围,指的是搜索引擎索引Web页面占整个Internet中页面的比例。对这方面的评价,主要指收录信息范围的广度、收录信息的全面性以及收录范围划分明确性等三个方面。搜索引擎收录信息的范围可从内容、信息源类型、搜索空间、网络信息组织的级别〔网站级、网页级〕等考虑。收录范围确定后.再考察其收录信息是否全面。这里的“全面”包括两层含义,一是指:该搜索引擎所收集的信息在内容、类型、搜索空间、网络信息组织的级别等方面上应穷尽所规定的收录范围;二是指:该搜索引擎应包含网络上属于收录范围的所有有价值的信息。收录信息全面是提高查全率的基本条件。收录信息范围广、内容全是体现搜索引擎包含信息丰富性的重要尺度。同时要注意,对广和全的要求是相对的。因而,各方面的实力都很强的大型搜索引擎系统一般具有相当大收录范围,形成综合性的搜索引擎;其它的则可形成专业性的或专门性的搜索引擎,为特定用户服务或为用户提供特定的信息。专业性的和专门性的搜索引擎在查询速度、查准率、界面简洁明朗方面往往要优于综合性的搜索引擎。在注意收录信息全的同时也要注意不可“全而不漏、照单全收”,否则会加重无用信息对有用信息的干扰。搜索引擎收录范围的划分也十分重要,划分明确的搜索引擎有助于用户了解该搜索引擎可提供的信息范围,便于用户针对不同的需求进行不同的选择。对一个电子商务搜索引擎的专用爬虫而言,应该注意信息的分类以及每个分类下的商品信息都达到尽量广的收录范围。

copyright think58 [资料来源:THINK58.com]


    搜索引擎的响应时间:响应时间 (Response Time)指的是用户发出查询请求后直至看到查询结果的这段时间。对于一个搜索引擎来说,无论它的其它功能多么强,若响应时间不快,用户也会弃之不用。响应时间对用户是否选择某个搜索引擎起着决定性的作用。
专业网络爬虫的设计
3.1 爬虫设计原理
    发现、搜集网页信息需要一个“网络爬虫”程序自动地在互联网中不停的下载需要的信息,并以一定的周期去更新下载的内容。网络爬虫工作的方式可以大致概括为:从一个初始的URL出发,获得一个页面,并从该页面中提取相关信息,然后它再对该页面所包含的URL进行分析,将有用的链接放入将访问的URL对列中,以等待访问,来继续寻找相关的信息,以此类推,直到没有可访问的链接为止。
初始化时,网络爬虫一般指向一个URL池。在遍历Internet 的过程中,按照深度优先或广度优先或其他启发式算法从URL 池中取出若干URL 进行处理,同时将未访问的URL 放入URL 池中,这样处理直到URL 池空为止。因为本文设计的是面向电子商务网站的专业网络爬虫,所以该设计只处理跟电子商务网站相关的链接,对于外部链接不做处理。
  
3.2 线程技术的应用
    线程是描述进程内的执行,正是线程负责执行包含在进程的地址空中的代码[19]。单个进程可能包含几个线程,它们可以同时执行进程的地址空间中的代码。每个线程有自己的一组CPU 寄存器和椎。线程可以看成“一段代码的执行”也就是一系列由JVM 执行的二进制指令。这里面没有对象甚至没有方法的概念。线程是有序的指令,而不是方法。线程的数据结构,仅仅只包括执行这些指令的信息。它包含当前的运行上下文,如寄存器的内容、当前指令的在运行引擎的指令流中的位置、保存方法本地参数和变量的运行时堆栈。切换线程更有效率,时间单位是μs。对于Java 而言,一个线程可以看作是JVM 的一个状态。

内容来自think58

[资料来源:http://THINK58.com]


3.2.1 创建线程
Java 使用两种方法来处理多线程[19]。
1. 子类化Thread 对象。Thread 对象是Java 提供的封装线程的对象。要创建一个线程,必须创建一个从 Thread 类导出的新类。必须覆盖 Thread 的 run() 函数来完成有用的工作。如果使用的类需要子类化另一个类,就不能子类化Thread 对象。
2. 实现 Runnable 接口。Runnable 接口只有一个方法 run(),我声明自己的类实现 Runnable 接口并提供这一方法,将线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,还必须创建 Thread 类的实例,这一点通过Thread 类的构造函数public Thread(Runnable target)来实现。
3.2.2  线程间通信
当线程在继续执行前需要等待一个条件时, 仅有synchronized 关键字是不够的。虽然 synchronized 关键字阻止并发更新一个对象,但它没有实现线程间通信。Object 类为此提供了3 个函数:wait()、notify() 和 notifyAll()。以全球气候预测程序为例,这些程序通过将地球分为许多单元,在每个循环中,每个单元的计算都是隔离进行的,直到这些值趋于稳定,然后相邻单元之间就会交换一些数据。所以,从本质上讲,在每个循环中各个线程都必须等待所有线程完成各自的任务以后才能进入下一个循环。该模型称为屏蔽同步。

本文来自think58 [资料来源:THINK58.com]


本文来自think58

[来源:http://www.think58.com]

[资料来源:http://www.THINK58.com]