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

.NET501 网站爬虫的设计C#+SQL SERVER

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

  (1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。
  (2) 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。
  (3) 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频/视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。
  (4) 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。
  为了解决上述问题,定向抓取相关网页资源的爬虫应运而生。爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。

[资料来源:THINK58.com]

网页分析算法可以归纳为基于网络拓扑、基于网页内容和基于用户访问行为三种类型。
基于网络拓扑的分析算法
基于网页之间的链接,通过已知的网页或数据,来对与其有直接或间接链接关系的对象(可以是网页或网站等)作出评价的算法。又分为网页粒度、网站粒度和网页块粒度这三种。
4.2.1 网页(Webpage)粒度的分析算法
PageRank和HITS算法是最常见的链接分析算法,两者都是通过对网页间链接度的递归和规范化计算,得到每个网页的重要度评价。 PageRank算法虽然考虑了用户访问行为的随机性和Sink网页的存在,但忽略了绝大多数用户访问时带有目的性,即网页和链接与查询主题的相关性。针 对这个问题,HITS算法提出了两个关键的概念:权威型网页(authority)和中心型网页(hub)。
基于链接的抓取的问题是相关页面主题团之间的隧道现象,即很多在抓取路径上偏离主题的网页也指向目标网页,局部评价策略中断了在当前路径上的抓取 行为。文献[21]提出了一种基于反向链接(BackLink)的分层式上下文模型(Context Model),用于描述指向目标网页一定物理跳数半径内的网页拓扑图的中心Layer0为目标网页,将网页依据指向目标网页的物理跳数进行层次划分,从外 层网页指向内层网页的链接称为反向链接。 copyright think58

[资料来源:THINK58.com]


4.2.2 网站粒度的分析算法
网站粒度的资源发现和管理策略也比网页粒度的更简单有效。网站粒度的爬虫抓取的关键之处在于站点的划分和站点等级(SiteRank)的计算。 SiteRank的计算方法与PageRank类似,但是需要对网站之间的链接作一定程度抽象,并在一定的模型下计算链接的权重。
网站划分情况分为按域名划分和按IP地址划分两种。文献[18]讨论了在分布式情况下,通过对同一个域名下不同主机、服务器的IP地址进行站 点划分,构造站点图,利用类似PageRank的方法评价SiteRank。同时,根据不同文件在各个站点上的分布情况,构造文档图,结合 SiteRank分布式计算得到DocRank。文献[18]证明,利用分布式的SiteRank计算,不仅大大降低了单机站点的算法代价,而且克服了单 独站点对整个网络覆盖率有限的缺点。附带的一个优点是,常见PageRank 造假难以对SiteRank进行欺骗。
4.2.3 网页块粒度的分析算法
在一个页面中,往往含有多个指向其他页面的链接,这些链接中只有一部分是指向主题相关网页的,或根据网页的链接锚文本表明其具有较高重要性。但 是,在PageRank和HITS算法中,没有对这些链接作区分,因此常常给网页分析带来广告等噪声链接的干扰。在网页块级别(Block level) 进行链接分析的算法的基本思想是通过VIPS网页分割算法将网页分为不同的网页块(page block),然后对这些网页块建立page to block和block to page的链接矩阵, 分别记为Z和X。于是,在 page to page图上的网页块级别的PageRank为 W p=X×Z; 在block to block图上的BlockRank为 W b =Z×X。 已经有人实现了块级别的PageRank和HITS算法,并通过实验证明,效率和准确率都比传统 本文来自think58 [来源:http://www.think58.com]

Internet Explorer使用了Trident排版引擎,几乎完整支持HTML 4.01,CSS Level 1,XML 1.0和DOM Level 1,只是有一些排版错误。它亦部分支持CSS Level 2 和DOM Level 2。它自带的XML解释器支持XHTML,但是微软从IE 5.0以后取消了这一支持,使它变得难以访问。如其它浏览器一样,当MIME类型标识为“text/html”,它能解释为XHTML。当MIME类型标识为“application/xml”和“text/xml”时,它也能解释把XHTML解释为XML,但需要一个小的XSLT度量[9]来重新启用XML对XHTML的支持。当把它定义为偏好类型如“application/xhtml+xml”时,它假装不理解XHTML,相反把它当成一种不了解的供下载的文件类型来对待。
Internet Explorer依靠DOCTYPE判断一个网页应该按老版本渲染还是按W3C标准渲染。(在打印中,Internet Explorer总使用W3C标准。)根据MSXML的版本不同,它可以完全支持XSLT 1.0或1998年12月的XSL草案。Internet Explorer有一个自己的ECMAScript变体,名为JScript。
WebBrowser控件简介
方法说明:
GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项
GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项
GoHome 相当于IE的“主页”按钮,连接用户默认的主页

[资料来源:THINK58.com]


GoSearch 相当于IE的“搜索”按钮,连接用户默认的搜索页面
Navigate 连接到指定的URL
Refresh 刷新当前页面
Refresh2 同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,
该表定义在ExDisp.h中,可以指定的不同值如下: think58 [资料来源:http://think58.com]


 •中止线程:
  如果需要中止线程可以使用如下的代码:
  DummyPriorityThread.Abort();
  •同步
  经常我们会遇到需要在线程间进行同步的情况,下面的代码给出了一些方法:
  using System;
  using System.Threading;
  namespace SynchronizationThreadsExample
  {
  class SynchronizationThreadsExample
  {
  private int counter = 0;
  static void Main( )
  {
  SynchronizationThreadsExample STE = new SynchronizationThreadsExample();
  STE.ThreadFunction( );
  }
  public void ThreadFunction ( )
  {
  Thread DummyThread = new Thread( new ThreadStart(SomeFunction)) ;
  DummyThread.IsBackground=true;
  DummyThread.Name = "First Thread";
  DummyThread.Start( );
  Console.WriteLine("Started thread ", DummyThread.Name);
  Thread DummyPriorityThread = new Thread( new ThreadStart(SomeFunction) );
  DummyPriorityThread.IsBackground=true;
  DummyPriorityThread.Name = "Second Thread"; 内容来自think58

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


  DummyPriorityThread.Start( );
  Console.WriteLine("Started thread ", DummyPriorityThread.Name);
  DummyThread.Join( );
  DummyPriorityThread.Join( );
  }
  public void SomeFunction( )
  {
  try
  {
  while (counter < 10)
  {
  int tempCounter = counter;
  tempCounter ++;
  Thread.Sleep(1);
  counter = tempCounter;
  Console.WriteLine( "Thread . SomeFunction: "+Thread.CurrentThread.Name+counter);
  }
  }
  catch (ThreadInterruptedException Ex)
  {
  Console.WriteLine( "Exception in thread "+Thread.CurrentThread.Name);
  }
  finally
  {
  Console.WriteLine( "Thread Exiting. "+Thread.CurrentThread.Name);
  }
  }
  }
  }
  •使用Interlock
  C#提供了一个特殊的类叫做interlocked,就是提供了锁机制的实现,我们可以加入如下的代码实现锁机制:
  Interlocked.SomeFunction (ref counter);
  •使用锁
  这是为了锁定代码关键区域以进行同步,锁定代码如下:

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

结  论
在毕业设计中我了解了,在开发一个项目时一定要先做好规划,按照软件的开发过程,详细地写好每一个必要的文档。一般的规则是,写文档需要团队协作,这样就允许开发人员和文档编写者利用彼此的长处,取长补短。例如,如果预期读者是系统设计师,开发人员需要提供技术细节,然后文档编写者按照正确语法组织和编辑内容。软件文档的最主要目标是传达一个系统的技术要素和使用方法。第二个目标是提供软件开发过程中的需求,决策,行为,角色和责任的书面记录。只有实现了这两个目标,软件文档才真正提供了有意义的信息。软件的概念就是:程序+文档,程序就是文档,文档集成在程序中。它要求在选择开发环境时不仅要考虑环境对设计、开发的完美支持,而且要考虑对维护、文档的支持;它要求软件人员在设计、开发过程中要考虑维护问题、文档问题;它要求程序与文档存储在同一位置、同一系统中;它要求使用相同工具进行程序与文档的书写、检索;它要求在编写和维护程序的同时形成文档,在书写文档时编写、维护程序。程序与文档合一的概念不仅存在于系统的设计、开发阶段而且存在于系统的维护阶段,它贯穿软件的生命周期。
最后通过此次毕业设计,我对系统编程思想有了更进一步的提升,首先我懂得了网站爬虫的概念,知道网站爬虫的优点;通过学习C#,我更加深入的理解了.NET;但是简单的认识是不够的,还需要我们更加深入的去了解,这就要求我们在以后的学习中把理论和实践相结合,能够更加严格的去要求自己。但是此网站爬虫还有许多的功能没有完成,还很不完善,所以下一步将要完成并有待于继续完善。 本文来自think58 [来源:http://think58.com]