
1、xmlhttp/winhttp法:
用xmlhttp/winhttp模拟向服务器发送请求,接收服务器返回的数据。
优点:效率高,基本无兼容性问题。
缺点:需要借助如fiddler的工具来模拟http请求。
2、IE/webbrowser法:
创建IE控件或webbrowser控件,结合htmlfile对象的方法和属性,模拟浏览器 *** 作,获取浏览器页面的数据。
优点:这个方法可以模拟大部分的浏览器 *** 作。所见即所得,浏览器能看到的数据就能用代码获取。
缺点:各种d窗相当烦人,兼容性也确实是个很伤脑筋的问题。上传文件在IE里根本无法实现。
3、QueryTables法:
因为它是excel自带,所以勉强也算是一种方法。其实此法和xmlhttp类似,也是GET或POST方式发送请求,然后得到服务器的response返回到单元格内。
优点:excel自带,可以通过录制宏得到代码,处理table很方便
。代码简短,适合快速获取一些存在于源代码的table里的数据。
缺点:无法模拟referer等发包头
也可以利用采集工具进行采集网页端的数据,无需写代码。
C#开发数据采集系统简单来说有几个重点。1. 开发或下载c#可以访问的驱动或通讯协议。许多通讯协议目前都有c#版本。
2. 编写数据采集代码,存放于实时数据库中。
3. 实时数据库只存放一定周期的数据,比如一天、一周、一月的数据,此数据是raw data。之前的数据需规整到ODS数据库里;ODS的数据可能是raw data,也可能是raw data的统计数据。
网页数据采集简单 提供两个C#方法,这是以前做百度优化 截取百度搜索榜的代码/// <summary>
/// 获得指定网址的HTML内容
/// </summary>
/// <param name="url">网址</param>
/// <returns></returns>
public string getHtml(string url)
{
try
{
WebRequest request = WebRequest.Create(url)//发出对统一资源标识符URI的请求
WebResponse response = request.GetResponse()//提供统一资源标识符URI的响应
Stream resStream = response.GetResponseStream()//从Internet资源返回数据流
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default)//以特定的编码读取字节流
string title = sr.ReadToEnd()//从流的当前位置到未尾读取字节流
//string title = ContentHtml.Substring(ContentHtml.IndexOf("今日上升最快") + 6, ContentHtml.IndexOf("<strong>娱乐</strong>") - ContentHtml.IndexOf("今日上升最快") - 6)
resStream.Close()//关闭Stream
sr.Close()//关闭StreamReader
return title
}
catch
{
return "未知网站"
}
finally
{
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)