服务器之家

服务器之家 > 正文

asp 采集实战代码

时间:2019-10-13 12:52     来源/作者:asp代码网

最近实在是太流行采集了,本人是不喜欢采集的,但对采集的原理我却很有兴趣进行研究,拿到了网上采集常用函数,对其进行了一番研究,并实战,结果成功,撇开效率问题,采集原理并不复杂,大家可以在搜索吧输入“采集”查看其原理。下面是一个采集的例子: 

复制代码代码如下:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 
<% Response.CodePage=65001%>  
<% Response.Charset="UTF-8" %>  
<%Server.Scripttimeout=9999999 
response.expires = 0  
response.expiresabsolute = Now() - 1  
response.addHeader "pragma","no-cache"  
response.addHeader "cache-control","private"  
Response.CacheControl = "no-cache" 
%>  
<%  
'声明取得目标信息的函数,通过XML组件进行实现。  
Function GetURL(url)  
Set Retrieval = server.createobject("MSXML2.XMLHTTP") 
With Retrieval  
.Open "GET", url, False  
.Send  
If .Status<>200 then '判断文档是否已经解析完,以做客户端接受返回消息  
exit function  
End If  

' 二进制转字符串 
GetURL = sTb(.responsebody)  
end with 
'对取得信息进行验证,如果信息长度小于100则说明截取失败  
End Function  

' 二进制转字符串,否则会出现乱码的!  
Function sTb(vin) 
Const adTypeText = 2 
Dim BytesStream,StringReturn 
Set BytesStream = Server.CreateObject("ADODB.Stream") 
With BytesStream 
.Type = adTypeText 
.Open 
.WriteText vin 
.Position = 0 
.Charset = "GB2312" 
.Position = 2 
StringReturn = .ReadText 
.Close 
End With 
Set BytesStream = Nothing 
sTb = StringReturn 
End Function  

Function Newstring(Wstr,Strng)  
 Newstring=Instr(Lcase(Wstr),Lcase(Strng))  
 If Newstring<=0 Then Newstring=Len(Wstr)  
End Function  

'声明截取的格式,从Start开始截取,到Over为结束  
Function GetKey(HTML,Start,Over)  
 Start=Newstring(HTML,start)  
 Over=Newstring(HTML,Over)  
 GetKey=Mid(HTML,Start,Over-start)  
End Function  

Dim Softid,Url,Html,Title  
'采集百度知道 
For i = 1 to 100 
Url="http://zhidao.baidu.com/question/10000"&i&".html" 
Html = GetURL(Url)  
Question = GetKey(Html,"<cq>","</cq>")  
Answer = GetKey(Html,"<ca>","</ca>") 

Response.Write(Question&"<br />") 
Response.Write(Answer) 
Response.Write("采集成功") 
Next 
'打开数据库,准备入库  
'dim connstr,conn,rs,sql  
'connstr="DBQ="+server.mappath("db1.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"  
'set conn=server.createobject("ADODB.CONNECTION")  
'conn.open connstr  
'set rs=server.createobject("adodb.recordset")  
'sql="select [列名] from [表名] where [列名]='"&Title&"'"  
'rs.open sql,conn,3,3  
'if rs.eof and rs.bof then  
'rs("列名")=Title  
'rs.update  
'set rs=nothing  
'end if  
'set rs=nothing  
%> 

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部