ASP采集程序原理

稿件来源: 互联网   撰稿作者: 匿名   发表日期: 2008-10-28 17:27:40   阅读次数: 212   查看权限: 游客查看

采集程序的主要步骤如下:

    采集程序的主要步骤如下:

 

 

一、获取被采集的页面的内容

二、从获取代码中提取所有用的数据

    一、获取被采集的页面的内容

    我目前所掌握的ASP常用获取被采集的页面的内容方法:

    1、用serverXMLHTTP组件获取数据

    以下内容为程序代码:

Function GetBody(weburl) 
    '创建对象
    Dim ObjXMLHTTP
    Set ObjXMLHTTP=Server.CreateObject("MSXML2.serverXMLHTTP")
    '请求文件,以异步形式
    ObjXMLHTTP.Open "GET",weburl,False
    ObjXMLHTTP.send
    While ObjXMLHTTP.readyState <> 4
        ObjXMLHTTP.waitForResponse 1000
    Wend
    '得到结果
     GetBody=ObjXMLHTTP.responseBody
    '释放对象
     Set ObjXMLHTTP=Nothing
End Function 

    调用方法:
 

GetBody(文件的URLf地址)

    2、或XMLHTTP组件获取数据

    以下内容为程序代码:

Function GetBody(weburl)  
    '创建对象
    Set Retrieval = CreateObject("Microsoft.XMLHTTP")
    With Retrieval
     .Open "Get", weburl, False, "", ""
     .Send
     GetBody = .ResponseBody
     End With
    '释放对象
    Set Retrieval = Nothing
End Function

    调用方法:

GetBody(文件的URLf地址)

    这样获取的数据内容还需要进行编码转换才可以使用

    以下内容为程序代码:

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 

    调用方法:

BytesToBstr(要转换的数据,编码)'编码常用为GB2312和UTF-8

    二、从获取代码中提取所有用的数据

    目前我掌握的方法有:

    1、用ASP内置的MID函数截取需要的数据

Function body(wstr,start,over)
start=Newstring(wstr,start)
'设置需要处理的数据的唯一的开始标记
over=Newstring(wstr,over)
'和start相对应的就是需要处理的数据的唯一的结束标记
body=mid(wstr,start,over-start)
'设置显示页面的范围
End Function

    调用方法:

body(被采集的页面的内容,开始标记,结束标记)

    2、用正则获取需要的数据

Function body(wstr,start,over)
Set xiaoqi = New Regexp'设置配置对象
xiaoqi.IgnoreCase = True'忽略大小写
xiaoqi.Global = True'设置为全文搜索
xiaoqi.Pattern =  "”&start&“.+?”&over&“"'正则表达式
Set Matches =xiaoqi.Execute(wstr)'开始执行配置
set  xiaoqi=nothing
body=""
For Each Match in Matches
body=body&Match.Value '循环匹配
Next
End Function

    调用方法:

body(被采集的页面的内容,开始标记,结束标记)

    采集程序祥细思路:

    1、取得网站的分页列表页的每页地址

目前绝大部分动态网站的分页地址都有规则,如:
动态页
第一页:index.asp?page=1
第二页:index.asp?page=2
第三页:index.asp?page=3
.....
静态页
第一页:page_1.htm
第二页:page_2.htm
第三页:page_3.htm
.....
取得网站的分页列表页的每页地址,只需要用变量替代每页地址的变化的字符即可如:page_<%="&page&"%>.htm

    2、获取被采集网站的分页列表页内容

    3、从分页列表代码中提取被采集的内容页面的URL连接地址

    绝大部分分页页面里的内容页连接也有固定规则,如:

连接1
连接2
连接3

    用以下代码就可以获得一个URL连接集合

    以下内容为程序代码:

Set xiaoqi = New Regexp
xiaoqi.IgnoreCase = True
xiaoqi.Global = True
xiaoqi.Pattern =  ””“.+?”““
Set Matches =xiaoqi.Execute(页面列表内容)
set  xiaoqi=nothing
url=""
For Each Match in Matches
url=url&Match.Value
Next 


    4、取得被采集的内容页面内容,根据”提取标记“从被采集的内容页面分别截取要取得的数据

    因为是动态生成的页面,大多数内容页面内都有相同的html标记,我们可以根据这些有规则的标记提取需要的各个部分的内容。

    如:每个页面都有网页标题,用我上面写的MID截取函数就可以获得之间的值,也可以用正则表达式来获得。

关键词: 采集   编辑时间: 2010-09-18

  • 感到高兴

    0

    高兴
  • 感到支持

    0

    支持
  • 感到搞笑

    0

    搞笑
  • 感到不解

    0

    不解
  • 感到谎言

    0

    谎言
  • 感到枪稿

    0

    枪稿
  • 感到震惊

    0

    震惊
  • 感到无奈

    0

    无奈
  • 感到无聊

    0

    无聊
  • 感到反对

    0

    反对
  • 感到愤怒

    0

    愤怒
100%(1)
0%(0)
共有0 条评论 发言请遵守【相关规定

网友评论

会员头像
发 表同步腾讯微博    验证码:  点击更新请先登陆
  • 暂无评论
关闭模块文章图片 article Pictrue
  • 我的妈妈爸爸
  • 基于koa2+mysql+vue2.0+Element阳光内容管理系统
  • 代码覆盖率工具 Istanbul 入门教程
  • 全栈工程师的武器——MEAN
  • 9款超炫的 CSS3 复选框(Checkbox)
  • 微信开发在线翻译功能
  • CSS3那些不为人知的高级属性
  • 给easyui的datebox添加清空事件
  • flash写字效果
  • kendoUI系列教程之DropDownList下拉菜单
  • kendoUI系列教程之datetimepicker日期时间选择
  • kendoUI系列教程之datepicker日期选择
  • kendoUI系列教程之combobox下拉列表框
  • kendoUI系列教程之colorpicker
  • kendoUI系列教程之calendar日历表
  • kendoUI系列教程之autocomplete自动补齐