首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页编程音乐小偷

用asp编写网站数据采集程序

来源: 互联网    日期:2008-7-25
 

引:假如你想从网上自动采集数据,把它们写进本地数据库中,那就看看本文介绍的方法吧。笔者为了解决这个问题,花了三天的时间,终于大功告成,下面就是完整的ASP代码,能让你随心所欲地从网上采集数据入库,非常实用啊!

一、网站数据采集方法

 

目前网站数据采集方法主要有两种,一是使用现成的软件,二是自己编写采集程序。

 

1、使用现成的软件

 

很多软件(例如网络信息采集大师、BK通用信息采集系统等)都能采集网上数据,只要你到baiduGoogle中,以“数据采集软件”为关键词搜一下,即可找到。如今这类软件数量繁多,都是别人用CDEPHIVB写成的,一般都提供了免费版让你下载试用。它们虽然也能采集网上数据,但是采集后的数据要么不能入库,要么只能入库前10条;如果你想突破这种限制,就必须花钱购买其正式版了。笔者试用了所有的数据采集软件,发现都是如此!

 

2、自己编写ASP采集程序

 

既然现成的软件不能免费使用,为了省钱,只能自己编写ASP网站数据采集程序了!下面就是该程序的代码,如果你想免费采集网站数据,运行之即可。

 

二、网站数据采集过程

 

编写ASP网站数据采集程序,首先需要抓取远程网页的源代码。微软serverXMLHTTP组件能帮你抓取远程页面的二进制代码,然后将该代码转换成字符,进行截取、替换处理,即可得到想要的数据;最后再将数据显示出来、或者写入数据库中,整个采集工作就完成了。

 

三、如何抓取远程网页?

 

 抓取远程HTML的二进制代码主要语句如下:

 

    Set Http = CreateObject("MSXML2.XMLHTTP")     '创建serverXMLHTTP组件

    Http.open "GET",src_ ,false

    Http.send()                                   '开始抓取

    if Http.readystate<>4 then

        exit sub

    end if

value_ = Http.responseBody         '抓取到的网页二进制代码存放在value_

下面我们写一个steal()子程序,只要你提供一个网址url,即可利用它抓取URL网页的二进制代码,存放在value_变量中。

public sub steal()                      '窃取目标URL地址的HTML代码

if src_<>"" then                        'src_=目标URL地址

    dim Http

    set Http=server.createobject("MSXML2.XMLHTTP")  '创建serverXMLHTTP组件

    Http.open "GET",src_ ,false

    Http.send()

    if Http.readystate<>4 then        '判断是否准备好

        exit sub

    end if

    value_= Http.responseBody         '抓取到网页

    if len(value_)<100 then

        response.write "获取远程文件 <a href="&url&" target=_blank>"&url&"</a> 失败。"

        response.end

    end if

    isGet_= True                '已抓取过标志isGet_

    set http=nothing

    if err.number<>0 then  err.Clear

else

    response.Write("<script>alert(""请先设置src属性!"")</script>")

end if

end sub

 

四、将网页二进制代码转换成字符

 

现在只要你提供一个远程网页URL,然后调用上面的steal(),即可抓到该网页(二进制代码形式);由于二进制代码无法显示,所以要显示抓到的网页、或者入库,还需要转换成字符,必须写一个转换函数BytesToBstr,将网页二进制代码转换成字符,代码如下:

 

private 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://market.ah163.net/city/AllDisplay.php?page=1&cityid=13),可以写一个2hand-cj.asp文件,在该文件中定义一个clsThief类,类中含有上面的子程序和函数,代码如下:

 

<%

Dim Html,myThief,url_tittle

 

'====采集六安信息港帖子网址列表

set myThief=new clsThief

GetUrl="http://market.ah163.net/city/AllDisplay.php?page=1&cityid=13"

myThief.src=GetUrl

myThief.steal           '抓取远程GetUrl整个网页,并将该网页二进制代码转换成字符

url_tittle=myThief.value             '抓取的网页存在url_tittle

Html=""&url_tittle&""                '最后结果存在Html

Response.write Html                  '显示结果

Response.write "<br>"           

set myThief=nothing                 '释放对象

 

Class clsThief    '定义一个clsThief

Private value_    '窃取到的内容

Private src_      '要偷的目标URL地址

Private isGet_    '判断是否已经偷过

 

public property let src(str) '赋值—要偷的目标URL地址/属性

src_=str

end property

 

public property get value '返回值—最终窃取并应用类方法加工过的内容/属性

value=value_

end property

 

private sub class_initialize()  '初始化clsThief

value_=""

src_=""

isGet_= false

end sub

 

public sub steal()        '窃取目标URL地址的HTML代码/方法

if src_<>"" then

    dim Http

    set Http=server.createobject("MSXML2.XMLHTTP")

    Http.open "GET",src_ ,false

    Http.send()

    if Http.readystate<>4 then

        exit sub

    end if

    value_=BytesToBSTR(Http.responseBody,"GB2312")     '将网页二进制转换成字符

    if len(value_)<100 then

        response.write "获取远程文件 <a href="&url&" target=_blank>"&url&"</a> 失败。"

        response.end

    end if

    isGet_= True

    set http=nothing

    if err.number<>0 then  err.Clear

else

    response.Write("<script>alert(""请先设置src属性!"")</script>")

end if

end sub

 

private 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

 

end class

%>

解释一下以上程序中几个关键的语句:

GetUrl=http://market.ah163.net/city/AllDisplay.php?page=1&cityid=13  '要采集的网址

myThief.src=GetUrl                   '网址赋予myThief.src

myThief.steal        '调用steal方法抓取远程网页,并将该网页二进制代码转换成字符

url_tittle=myThief.value             '抓取的网页存放在url_tittle

Html=""&url_tittle&""                '最后结果存放在Html

Response.write Html                  '使用response显示抓取的网页

 

运行上面的2hand-cj.asp可以成功地抓取网页,结果如下图1所示!

 

接下来对于抓取的网页,我们只想保留表格(如上图)、其他的数据全不要,该怎么办呢?这就需要对抓取的网页进行截取了!



文章共2页:  [1] [2]


更多的用asp编写网站数据采集程序请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2008-7-25   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报