怎么用VBA或网络爬虫程序抓取网站数据

怎么用VBA或网络爬虫程序抓取网站数据,第1张

VBA网抓常用方法

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

{

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9255743.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存