简单的asp采集代码教程
程序员文章站
2022-04-14 19:11:06
采集开始 第一步是分析要采集的页面。 使用浏览器打开要采集的页面(如:http://sports.sina.com.cn/k/2008-09-15/04593948756...
采集开始
第一步是分析要采集的页面。
使用浏览器打开要采集的页面(如:http://sports.sina.com.cn/k/2008-09-15/04593948756.shtml,你可以其他页面),打开后,点击右键,查源文件。
第二步,找到要采集的内容所在位置。
假如我要采集这个页面上的标题和内容所在的位置:
标题在<h1 id="artibodytitle" style="color:#03005c;">和</h1>之间
内容在<!-- 正文内容 begin -->和<!-- 正文内容 end -->之间
注意一下所在位置的唯一性,可以在找到后,使用编辑中的查找,看看是不是唯一的,尽可能是唯一的,如果不是,尽可能是第一个,如果再不行,只能更换
第三步,写代码
< %
'功能:asp采集代码
'作者:wangsdong
'备注:支持原创程序,请保留此信息,谢谢
url="http://sports.sina.com.cn/k/2008-09-15/04593948756.shtml"
str=gethttppage(url)
title=strcut(str,"<h1 id=""artibodytitle"" style=""color:#03005c;"">","</h1>",2)
content=strcut(str,"<!-- 正文内容 begin -->","<!-- 正文内容 end -->",2)
response.write "新闻标题<br><b>"&title&"</b><br><br><br>新闻内容:<br>"&content
function gethttppage(url)
on error resume next
dim http
set http=server.createobject("microsoft.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
response.write "<p align='center'><font color='red'><b>服务器获取文件内容出错</b></font></p>"
err.clear
end if
end function
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
'截取字符串,1.包括起始和终止字符,2.不包括
function strcut(strcontent,startstr,endstr,cuttype)
dim strhtml,s1,s2
strhtml = strcontent
on error resume next
select case cuttype
case 1
s1 = instr(strhtml,startstr)
s2 = instr(s1,strhtml,endstr)+len(endstr)
case 2
s1 = instr(strhtml,startstr)+len(startstr)
s2 = instr(s1,strhtml,endstr)
end select
if err then
strcute = "<p align='center'>没有找到需要的内容。</p>"
err.clear
exit function
else
strcut = mid(strhtml,s1,s2-s1)
end if
end function
% >
这样就可以的,我现在将得到的内容输出来,你可以将这些内容写入数据库,这样数据就是你的了。
第一步是分析要采集的页面。
使用浏览器打开要采集的页面(如:http://sports.sina.com.cn/k/2008-09-15/04593948756.shtml,你可以其他页面),打开后,点击右键,查源文件。
第二步,找到要采集的内容所在位置。
假如我要采集这个页面上的标题和内容所在的位置:
标题在<h1 id="artibodytitle" style="color:#03005c;">和</h1>之间
内容在<!-- 正文内容 begin -->和<!-- 正文内容 end -->之间
注意一下所在位置的唯一性,可以在找到后,使用编辑中的查找,看看是不是唯一的,尽可能是唯一的,如果不是,尽可能是第一个,如果再不行,只能更换
第三步,写代码
复制代码 代码如下:
< %
'功能:asp采集代码
'作者:wangsdong
'备注:支持原创程序,请保留此信息,谢谢
url="http://sports.sina.com.cn/k/2008-09-15/04593948756.shtml"
str=gethttppage(url)
title=strcut(str,"<h1 id=""artibodytitle"" style=""color:#03005c;"">","</h1>",2)
content=strcut(str,"<!-- 正文内容 begin -->","<!-- 正文内容 end -->",2)
response.write "新闻标题<br><b>"&title&"</b><br><br><br>新闻内容:<br>"&content
function gethttppage(url)
on error resume next
dim http
set http=server.createobject("microsoft.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
response.write "<p align='center'><font color='red'><b>服务器获取文件内容出错</b></font></p>"
err.clear
end if
end function
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
'截取字符串,1.包括起始和终止字符,2.不包括
function strcut(strcontent,startstr,endstr,cuttype)
dim strhtml,s1,s2
strhtml = strcontent
on error resume next
select case cuttype
case 1
s1 = instr(strhtml,startstr)
s2 = instr(s1,strhtml,endstr)+len(endstr)
case 2
s1 = instr(strhtml,startstr)+len(startstr)
s2 = instr(s1,strhtml,endstr)
end select
if err then
strcute = "<p align='center'>没有找到需要的内容。</p>"
err.clear
exit function
else
strcut = mid(strhtml,s1,s2-s1)
end if
end function
% >
这样就可以的,我现在将得到的内容输出来,你可以将这些内容写入数据库,这样数据就是你的了。
上一篇: asp生成带有样式的word文件方法
下一篇: vbs或asp采集文章时网页编码问题