以文本方式查看主题 - 智睿软件_技术交流论坛 (http://zhirui.net/bbs/index.asp) -- Web页面设计 (http://zhirui.net/bbs/list.asp?boardid=33) ---- ASP采集中获取网页内所需的html代码 (http://zhirui.net/bbs/dispbbs.asp?boardid=33&id=3433) |
|
-- 作者:zhirui -- 发布时间:2014-10-10 19:18:56 -- ASP采集中获取网页内所需的html代码 有时候,需要获取网页的html代码,如新闻采集。采集之前,首页要得到被采集的页面的html代码,然后根据代码,分析出你想要得到的内容,最后将得到的内容保存到自己的数据库中 function.asp
index.asp <!--#include file="function.asp"--> <% url="http://www.google.cn" response.write getHTTPPage(url) %> |
|
-- 作者:zhirui -- 发布时间:2014-10-10 19:19:34 -- 采集开始 第一步是分析要采集的页面。 使用浏览器打开要采集的页面(如: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 % > 这样就可以的,我现在将得到的内容输出来,你可以将这些内容写入数据库,这样数据就是你的了。 |