基于C多线程Web实体抽取设计与实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于C多线程Web实体抽取设计与实现

基于C多线程Web实体抽取设计与实现   摘要:介绍了C#网络编程及C#多线程编程的相关类库,以及网络编程的相关类库,并通过一个大型评论网站的数据抽取为背景,分析了相关的技术难点,分为抽取、处理、存储三个模块,构造了解决方案并将其实现。实验证明,该框架非常有效。   关键词:C#;网络编程;多线程编程;数据抽取   中图分类号:TP319文献标识码:A文章编号:1672-7800(2013)001-008402   0引言   随着互联网的发展,Web上数据的价值越来越得到研究人员的重视。因而获取Web上的信息成为深入研究的一个重要基础手段。很多的大型网站会提供API供研究人员抽取其数据。然而,仍然有相当多的网站并没有提供API。对这样的网站进行研究,就必须依靠编程,用程序抽取,最常见的就是网络爬虫。本文利用比较便利的C#网络编程,结合多线程、正则表达式、ADO等技术,实现一个大型网站的评论实体抽取到本地的应用。文中计划抽取的网站R是美国一个著名的网购评论网站,平均每天新增评论约1500条,到目前为止大概有20个类别约56000家网店约141万条评论,因此数据量非常大。笔者综合了Web抽取的关键技术,设计了解决方案,得到了满意的抽取结果。   1C#网络编程   C#中用于网络编程的类主要在System.Net和System.Net.Sockets这两个命名空间。   System.Net命名空间为当前网络上使用的多种协议提供了简单的编程接口。WebRequest和WebResponse类形成了所谓的可插接式协议的基础,可插接式协议是网络服务的一种实现,使开发者能够开发出使用Internet资源的应用程序,而不必考虑各种不同协议的具体细节。WebRequest是.NETFramework的请求/响应模型的abstract基类,发出对统一资源标识符(URI)的请求,用于访问Internet数据。使用该请求/响应模型的应用程序可以用协议不可知的方式从Internet请求数据,在这种方式下,应用程序处理WebRequest类的实例,而协议特定的子类则执行请求的具体细节。请求从应用程序发送到某个特定的URI,如服务器上的网页。WebResponse类是abstract基类,协议特定的响应类从该抽象基类派生。应用程序可以使用WebResponse类的实例以协议不可知的方式参与请求和响应事务,而从WebResponse派生的协议特定的类携带请求的详细信息。客户端应用程序不直接创建WebResponse对象,而是通过对WebRequest实例调用GetResponse方法来进行创建。   Socket类为网络通信提供了一套丰富的方法和属性。Socket类允许开发者使用ProtocolType枚举中所列出的任何一种协议执行异步和同步数据传输。Socket类遵循异步方法的.NETFramework命名模式,例如,同步Receive方法对应于异步BeginReceive和EndReceive方法。如果应用程序在执行期间只需要一个线程,可以使用下面两种方法,这些方法适用于同步操作模式:①如果当前使用的是面向连接的协议(如TCP),则服务器可以使用Listen方法侦听连接。Accept方法处理任何传入的连接请求,并返回可用于与远程主机进行数据通信的Socket。可以使用此返回的Socket来调用Send或Receive方法;如果要指定本地IP地址和端口号,那么在调用Listen方法之前先调用Bind方法;如果希望基础服务提供程序为用户分配可用端口,请使用端口号0;如果希望连接到侦听主机,可以调用Connect方法;若要进行数据通信,那么调用Send或Receive方法;②如果当前使用的是无连接协议(如UDP),则根本不需要侦听连接。调用ReceiveFrom方法来接受任何传入的数据报,使用SendTo方法可将数据报发送到远程主机。若要在执行过程中使用单独的线程处理通信,那么可以使用下面的方法,这些方法适用于异步操作模式;③如果当前使用的是面向连接的协议(如TCP),则可使用Socket、BeginConnect和EndConnect方法来连接侦听主机。通过使用BeginSend和EndSend方法,或者使用BeginReceive和EndReceive方法,可以进行异步数据通信。可以使用BeginAccept和EndAccept处理传入的连接请求;④如果使用UDP等无连接协议,则可以使用BeginSendTo和EndSendTo来发送数据报,而使用BeginReceiveFrom和EndReceiveFrom来接收数据报。当数据发送和数据接收完成之后,可使用Shutdown方法来禁用Socket。在调用Shutdown之后,可调用

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档