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