小偷&小偷入库&采集入库
2007-07-18 15:44
183 查看
引用: MSXML. xmlhttp 的应用参考
XMLHTTP应用参考
一、使用步骤:
1、创建XMLHTTP对象 //需MSXML4.0支持
2、打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。
3、发送指令。
4、等待并接收服务端返回的处理结果。
5、释放XMLHTTP对象
二、XMLHTTP方法:
1、XMLHTTP对象
备注:客户机可以使用XMLHTTP对象发送任意的HTTP请求,接受HTTP应答,还可以对应答的XML文档进行解析。
Open方法:初始化一个Msxml2.XMLHTTP请求,指定HTTP请求方式、URL以及鉴定信息。
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
bstrMethod: 数据传送方式,即GET或POST。
bstrUrl: 服务网页的URL。
varAsync: 是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。
bstrUser: 用户名,可省略。
bstrPassword:用户口令,可省略。
Send方法:发送HTTP请求到服务器,返回应答。
语法:
oXMLHttpRequest.send(varBody)
说明:此方法是否同步取决于Open方法的varAsync参数。如果设为True则为同步,调用立刻返回,如果设为False调用直到整个应答被接收了才返回。
setRequestHeader( bstrHeader, bstrvalue )
bstrHeader:HTTP 头(header)
bstrvalue: HTTP 头(header)的值
如果Open方法定义为POST,可以定义表单方式上传:
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")
三、XMLHTTP属性:
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。
responseBody: 结果返回为无符号整数数组。
responseStream: 结果返回为IStream流。
responseText : 结果返回为字符串。
responseXML: 结果返回为XML格式数据。
四、示例:
CODE: - 复制 - 保存 - 隐藏 - Ascii - UnAscii - 大写 - 小写 <script language="javascript">
function getDatal(url){
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.4.0";//创建XMLHTTPRequest对象,需MSXML4.0支持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"]
xmlhttp.open("GET",url,false,"",""; //使用HTTP GET初始化HTTP请求
xmlhttp.send(""; //发送HTTP请求并获取HTTP响应
return xmlhttp.responseXML; //获取XML文档
}
</script>
现在网上流行的小偷程序比较多,有新闻类小偷,音乐小偷,下载小偷,那么它们是如何做的呢,下面我来做个简单介绍,希望对各位站长有所帮助。
(一)原理
小偷程序实际上是通过了XML中的XMLHTTP组件调用其它网站上的网页。比如新闻小偷程序,很多都是调用了sina的新闻网页,并且对其中的html进行了一些替换,同时对广告也进行了过滤。用小偷程序的优点有:无须维护网站,因为小偷程序中的数据来自其他网站,它将随着该网站的更新而更新;可以节省服务器资源,一般小偷程序就几个文件,所有网页内容都是来自其他网站。缺点有:不稳定,如果目标网站出错,程序也会出错,而且,如果目标网站进行升级维护,那么小偷程序也要进行相应修改;速度,因为是远程调用,速度和在本地服务器上读取数据比起来,肯定要慢一些。
(二)事例
下面就XMLHTTP在ASP中的应用做个简单说明
代码:
visual basic code:
------------------------------------------------------
代码:
visual basic code:
-------------------------------------
如何写ASP入库小偷程序
入库小偷的原理也很简单:就是用XMLHTTP远程读取网页的内容,然后根据需要,对读到的内容进行加工(过滤,替换,分类),最后得到自己需要的数据,加入到数据库中。
首先:我们先用XMLHTTP读取远程网页(我的另一片文章中有介绍)。
其次:对内容进行过滤,这个是比较关键的步骤,比如说,我要从远程网页上提取出所有url连接,我应该怎么做呢?
代码:
visual basic code:
然后,我们需要根据需要做一些替换功能,把不必要的数据替换掉,这个比较简单,用Replace函数即可。
最后,进行数据库操作
-------------------------------
一个例子
代码:
visual basic code:
***********************************************************************************************************
引用: 远程获取内容,并将内容存在本地电脑上,包括任何文件
visual basic code:
XMLHTTP应用参考
一、使用步骤:
1、创建XMLHTTP对象 //需MSXML4.0支持
2、打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。
3、发送指令。
4、等待并接收服务端返回的处理结果。
5、释放XMLHTTP对象
二、XMLHTTP方法:
1、XMLHTTP对象
备注:客户机可以使用XMLHTTP对象发送任意的HTTP请求,接受HTTP应答,还可以对应答的XML文档进行解析。
Open方法:初始化一个Msxml2.XMLHTTP请求,指定HTTP请求方式、URL以及鉴定信息。
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
bstrMethod: 数据传送方式,即GET或POST。
bstrUrl: 服务网页的URL。
varAsync: 是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。
bstrUser: 用户名,可省略。
bstrPassword:用户口令,可省略。
Send方法:发送HTTP请求到服务器,返回应答。
语法:
oXMLHttpRequest.send(varBody)
说明:此方法是否同步取决于Open方法的varAsync参数。如果设为True则为同步,调用立刻返回,如果设为False调用直到整个应答被接收了才返回。
setRequestHeader( bstrHeader, bstrvalue )
bstrHeader:HTTP 头(header)
bstrvalue: HTTP 头(header)的值
如果Open方法定义为POST,可以定义表单方式上传:
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")
三、XMLHTTP属性:
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。
responseBody: 结果返回为无符号整数数组。
responseStream: 结果返回为IStream流。
responseText : 结果返回为字符串。
responseXML: 结果返回为XML格式数据。
四、示例:
CODE: - 复制 - 保存 - 隐藏 - Ascii - UnAscii - 大写 - 小写 <script language="javascript">
function getDatal(url){
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.4.0";//创建XMLHTTPRequest对象,需MSXML4.0支持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"]
xmlhttp.open("GET",url,false,"",""; //使用HTTP GET初始化HTTP请求
xmlhttp.send(""; //发送HTTP请求并获取HTTP响应
return xmlhttp.responseXML; //获取XML文档
}
</script>
现在网上流行的小偷程序比较多,有新闻类小偷,音乐小偷,下载小偷,那么它们是如何做的呢,下面我来做个简单介绍,希望对各位站长有所帮助。
(一)原理
小偷程序实际上是通过了XML中的XMLHTTP组件调用其它网站上的网页。比如新闻小偷程序,很多都是调用了sina的新闻网页,并且对其中的html进行了一些替换,同时对广告也进行了过滤。用小偷程序的优点有:无须维护网站,因为小偷程序中的数据来自其他网站,它将随着该网站的更新而更新;可以节省服务器资源,一般小偷程序就几个文件,所有网页内容都是来自其他网站。缺点有:不稳定,如果目标网站出错,程序也会出错,而且,如果目标网站进行升级维护,那么小偷程序也要进行相应修改;速度,因为是远程调用,速度和在本地服务器上读取数据比起来,肯定要慢一些。
(二)事例
下面就XMLHTTP在ASP中的应用做个简单说明
代码:
visual basic code:
<% '常用函数 '1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码 Function getHTTPPage(url) Dim Http Set Http=server.CreateObject("MSXML2.XMLHTTP" Http.Open "GET",url,false Http.send() If Http.readystate<>4 Then Exit Function End If getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312" Set http=nothing If Err.number<>0 Then Err.Clear End Function '2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换 Function BytesToBstr(body,Cset) Dim objstream Set objstream = Server.CreateObject("adodb.stream" objstream.Type = 1 objstream.Mode =3 objstream.Open objstream.Write body objstream.Position = 0 objstream.Type = 2 objstream.Charset = Cset BytesToBstr = objstream.ReadText objstream.Close Set objstream = nothing End Function '下面试着调用http://www.998w.net/class/的html内容 Dim Url,Html Url="http://www.998w.net/class/" Html = getHTTPPage(Url) Response.write Html %>
------------------------------------------------------
代码:
visual basic code:
'代码]用XMLHTTP读取远程文件 <% Response.Buffer = True Dim objXMLHTTP, xml Set xml = Server.CreateObject("Microsoft.XMLHTTP" xml.Open "GET", "http://www.998w.net/down/998w1.0.rar", False xml.Send ' Add a header to give it a file name: Response.AddHeader "Content-Disposition", _ "attachment;filename=mitchell-pres.zip" ' Specify the content type to tell the browser what to do: Response.ContentType = "application/zip" ' Binarywrite the bytes to the browser Response.BinaryWrite xml.responseBody Set xml = Nothing %>
-------------------------------------
如何写ASP入库小偷程序
入库小偷的原理也很简单:就是用XMLHTTP远程读取网页的内容,然后根据需要,对读到的内容进行加工(过滤,替换,分类),最后得到自己需要的数据,加入到数据库中。
首先:我们先用XMLHTTP读取远程网页(我的另一片文章中有介绍)。
其次:对内容进行过滤,这个是比较关键的步骤,比如说,我要从远程网页上提取出所有url连接,我应该怎么做呢?
代码:
visual basic code:
‘这里用的是正则式 Set objRegExp = New Regexp '建立对象 objRegExp.IgnoreCase = True '大小写忽略 objRegExp.Global = True '全局为真 objRegExp.Pattern = "http://.+?" '匹配字段 Set mm=objRegExp.Execute(Str) '执行查找,str为输入参数 For Each Match In mm '进入循环 Response.write(Match.Value) '输出url地址 next
然后,我们需要根据需要做一些替换功能,把不必要的数据替换掉,这个比较简单,用Replace函数即可。
最后,进行数据库操作
-------------------------------
一个例子
代码:
visual basic code:
<% On Error Resume Next Server.ScriptTimeOut=9999999 Function getHTTPPage(Path) t = GetBody(Path) getHTTPPage=BytesToBstr(t,"GB2312" End Function '首先,进行小偷程序的一些初始化设置,以上代码的作用分别是忽略掉所有非致命性错误,把小偷程序的运行超时时间设置得很长(这样不会出现运行超时的错误),转换原来默认的UTF-8编码转换成GB2312编码,否则直接用XMLHTTP组件调用有中文字符的网页得到的将是乱码。 Function GetBody(url) On Error Resume Next Set Retrieval = CreateObject("Microsoft.XMLHTTP" With Retrieval .Open "Get", url, False, "", "" .Send GetBody = .ResponseBody End With Set Retrieval = Nothing End Function '然后调用XMLHTTP组件创建一个对象并进行初始化设置。 Function BytesToBstr(body,Cset) Dim objstream Set objstream = Server.CreateObject("adodb.stream" objstream.Type = 1 objstream.Mode =3 objstream.Open objstream.Write body objstream.Position = 0 objstream.Type = 2 objstream.Charset = Cset BytesToBstr = objstream.ReadText objstream.Close Set objstream = nothing End Function Function Newstring(wstr,strng) Newstring=Instr(LCase(wstr),LCase(strng)) If Newstring<=0 Then Newstring=Len(wstr) End Function '处理抓取回来的数据需要调用adodb.stream组件并进行初始化设置。%> '以下即为页面显示部分 <% Dim wstr,Str,url,start,over,city '定义一些需要使用到的变量 city = Request.QueryString("id") '程序传回的ID变量(即用户选择的城市)赋给id url="http://appnews.qq.com/cgi-bin/news_qq_search?city="&city&"" '这里设置需要抓取的页面地址,当然你也可以直接指定某个地址而不使用变量 wstr=getHTTPPage(url) '获取指定页面的全部数据 start=Newstring(wstr," <html>") '这里设置需要处理的数据的头部,这个变量应视不同情况而设置,具体内容可以通过查看需要抓取的页面的源代码来确定。因为在这个程序里我们需要抓取整个页面,所以设置为页面全部抓取。注意,设置的内容必须是页面内容唯一的,不可以重复。 over=Newstring(wstr," </HTML>") '和start相对应的就是需要处理的数据的尾部,同样的,设置的内容必须是页面中唯一的。 body=mid(wstr,start,over-start) '设置显示页面的范围 '下面就是动用乾坤挪移大法的时候了,通过replace可以用一些字符替换掉数据中指定的字符。 body = Replace(body,"skin1","天气预报 - 斯克网络") body = Replace(body,"http://appnews.qq.com/cgi-bin/news_qq_search?city","tianqi.asp?id") '本程序中已经完成了替换的工作,如果有其他需要的话可以继续进行类似的替换操作。 response.write body %>
***********************************************************************************************************
引用: 远程获取内容,并将内容存在本地电脑上,包括任何文件
visual basic code:
<% '----------远程获取内容,并将内容存在本地电脑上,包括任何文件!---------- 'On Error Resume Next 'Set the content type to the specific type that you are sending. 'Response.ContentType = "IMAGE/JPEG" '-------------------------------定义输出格式----------------------------- Path=request.querystring("p") sPath = Path If Left(LCase(path),7) <> "http://"; Then '-------------如果前面没有http就是本地文件,交给LocalFile处理------------ LocalFile(path) Else '--------------------否则为远程文件,交给RemoteFile处理------------------ RemoteFile(Path) End If 'Response.Write err.Description Sub LocalFile(Path) '-------------------如果为本地文件则简单的跳转到该页面------------------- Response.Redirect Path End Sub Sub RemoteFile(sPath) '-------------------------处理远程文件函数------------------------------ FileName = GetFileName(sPath) '-------------GetFileName为把地址转换为合格的文件名过程------------- FileName = Server.MapPath("/UploadFile/Cache/" & FileName) Set objFso = Server.CreateObject("Scripting.FileSystemObject") 'Response.Write fileName If objFso.FileExists(FileName) Then '--------------检查文件是否是已经访问过,如是,则简单跳转------------ Response.Redirect "/uploadfile/cache/" & GetFileName(path) Else '----------------否则的话就先用GetBody函数读取---------------------- 'Response.Write Path t = GetBody(Path) '-----------------用二进制方法写到浏览器上-------------------------- Response.BinaryWrite t Response.Flush '-----------------输出缓冲------------------------------------------ SaveFile t,GetFileName(path) '------------------将文件内容缓存到本地路径,以待下次访问----------- End If Set objFso = Nothing End Sub Function GetBody(url) '-----------------------本函数为远程获取内容的函数--------------------- 'on error resume next 'Response.Write url Set Retrieval = CreateObject("Microsoft.XMLHTTP") '----------------------建立XMLHTTP对象----------------------------- With Retrieval .Open "Get", url, False, "", "" '------------------用Get,异步的方法发送----------------------- .Send 'GetBody = .ResponseText GetBody = .ResponseBody '------------------函数返回获取的内容-------------------------- End With Set Retrieval = Nothing 'response.Write err.Description End Function Function GetFileName(Str) '-------------------------本函数为合格化的文件名函数------------------- Str = Replace(LCase(Str),"http://";,"") Str = Replace(LCase(Str),"//","/") Str = Replace(Str,"/","") Str = Replace(Str,vbcrlf,"") GetFileName = Str End Function Sub SaveFile(Str,fName) '-------------------------本函数为将流内容存盘的函数------------------- 'on error resume next Set objStream = Server.CreateObject("ADODB.Stream") '--------------建立ADODB.Stream对象,必须要ADO 2.5以上版本--------- objStream.Type = adTypeBinary '-------------以二进制模式打开------------------------------------- objStream.Open objstream.write Str '--------------------将字符串内容写入缓冲-------------------------- 'response.Write fname objstream.SaveToFile "c:\inetpub\myweb\uploadfile\cache\" & fName,adSaveCreateOverWrite '--------------------将缓冲的内容写入文件-------------------------- 'response.BinaryWrite objstream.Read objstream.Close() Set objstream = nothing '-----------------------关闭对象,释放资源------------------------- 'response.Write err.Description End Sub %>
相关文章推荐
- ASP小偷自动采集入库方法
- 小偷程序和采集入库
- ASP小偷自动采集入库方法
- 小偷&小偷入库&采集入库
- 小偷&小偷入库&采集入库
- 天气小偷程序,自动采集信息入库
- 采集入库程序原理
- 入库&采集入库
- asp.net采集函数(采集、分析、替换、入库一体)
- 浅谈自动采集程序及入库
- 网页数据采集小偷
- 防止网站内容被人小偷和采集的ASP代码
- 防止网站内容被人小偷和采集的ASP代码
- 解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
- 浅谈自动采集程序及入库
- 基于PHP的简单采集数据入库程序
- 网页采集+PDO入库
- 如何采集京东商城的商品 多图 自动分类 自动去水印 多属性自动入库
- PHP采集入库教程