采集原理---采集技术篇---XMLHTTP_ASP教程-查字典教程网
采集原理---采集技术篇---XMLHTTP
采集原理---采集技术篇---XMLHTTP
发布时间:2016-12-29 来源:查字典编辑
摘要:最近一段时间,采集很热门,从新闻小偷,到音乐小偷,到新闻采集,Flash采集,都有他的踪影,现在还有很多的人对采集都很感兴趣,为了服务大家,...

最近一段时间,采集很热门,从新闻小偷,到音乐小偷,到新闻采集,Flash采集,都有他的踪影,现在还有很多的人对采集都很感兴趣,为了服务大家,我也正在写一套采集程序,名字为心意采集程序,现在我讲一下,采集用到的相关技术。

下面讲到的也不是很高深的XMLHTTP技术,我也是稍稍讲一下,一个采集需要用到的几块内容

如果你需要了解更多的问题,请去www.google.com搜索XMLHTTP技术你将会得到更多的帮助,如果大家有什么疑问的话,可以在论坛上回贴

下面只讲到如何在网上得到数据,并不涉及到数据处理

第一XMLHTTP技术

http://www.0579.info/study/exploitation/net/58685.htm

上面那个地址,那篇文章讲的根本原理已经很详细了,但是我们一般采集的话,刚开始不太需要了解太多。只要实用就可以了,等以后不够用的时候,再去找相关文档也来得急

首先,我们需要建立一个XMLHTTP对象

微软发布的xmlhttp组件已经有很多的版本了,我知道的就有以下几种:

"MSXML2.ServerXMLHTTP.4.0"

"MSXML2.ServerXMLHTTP.3.0"

"MSXML2.ServerXMLHTTP"

"MSXML2.XMLHTTP.5.0"

"MSXML2.XMLHTTP.4.0"

"MSXML2.XMLHTTP.3.0"

"MSXML2.XMLHTTP"

"Microsoft.XMLHTTP

以上有这么多种组件,我们当然是需要申请最高版本的对象喽,那有什么办法可以实现呢

下面我拿出一段代码,大家可以看看,他是按最高版本申请XMLHTTP对象的

DimArrProgId,Prog,Flag,XmlHttpCom

ArrProgId=array("MSXML2.ServerXMLHTTP.4.0","MSXML2.ServerXMLHTTP.3.0","MSXML2.ServerXMLHTTP","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP")

ForEachProgInarrProgId

If(IsObjInstalled(Prog)=true)Then

XmlHttpCom=Prog

ExitFor

EndIf

Next

'//<summary>

'//Rem检查组件是否支持是返回True否返回False

'//</summary>

PublicFunctionIsObjInstalled(strClassString)

OnErrorResumeNext

'//设置初始化值

IsObjInstalled=False

Err=0

'//测试代码

DimxTestObj

SetxTestObj=Server.createObject(strClassString)

If0=ErrThenIsObjInstalled=True

'//清除所申请的对象

SetxTestObj=Nothing

Err=0

EndFunction

上面那段代码就是申请到当前服务器支持的最高版本的XMLHTTP对象了

下面我们讲一下采集功能函数

'GetFileText为采集功能函数

PublicFunctionGetFileText(url)

onerrorresumenext'有错误时继续执行代码

Dimhttp'定义变量

'Sethttp=Server.createobject(XmlHttpCom)'申请对象

Sethttp=Server.createobject("Microsoft.XMLHTTP")'保险起见,写出一个服务器一般都支持的版本

Http.open"GET",url,False'打开对象用GET方式等待服务器响应

Http.Send()'发送

IfHttp.readystate<>4Then'如果服务器没反应,则退出函数

ExitFunction

EndIf

GetFileText=bytes2BSTR(Http.responseBody,"GB2312")'把得到的数据流二进制文件转化成文本字符格式(GB2312)

Sethttp=Nothing'删除对象

Iferr.number<>0Thenerr.Clear'如果有错误,清除错误

EndFunction

'//<summary>

'//采用ADODB.Stream处理采集到的数据,把二进制的文件转成文本字符

'//</summary>

FunctionBytes2bStr(vin,cSet)

DimBytesStream,StringReturn

SetBytesStream=Server.createObject("ADODB.Stream")

BytesStream.Type=2

BytesStream.Open

BytesStream.WriteTextvin

BytesStream.Position=0

BytesStream.CharSet=cSet

BytesStream.Position=2

StringReturn=BytesStream.ReadText

BytesStream.close

SetBytesStream=Nothing

Bytes2bStr=StringReturn

EndFunction

下面我定义一个路径变量URL

URL="http://ent.sina.com.cn/star/mainland/more.html";

上面是一个网址,如果我们想把上面这个地址采集下来,并显示出来的话,我们可以这样操作

URL="http://ent.sina.com.cn/star/mainland/more.html";

Response.WriteGetFileText(URL)

这样就可以采集到上面网址的内容了

是不是很简单呢

那采集到数据之后应该怎么操作呢

怎么区分数据,如果得到你想要的数据,如果把得到的数据入库呢

这是以后需要分析讲解的问题了入库要注意的地方,用正表达式处理数据

附上上面代码的源文件,大家可以下载下去,运行起来试试,是不是真的能采集到数据库

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新ASP教程学习
    热门ASP教程学习
    编程开发子分类