读书人

远路抓取过来的数据进行循环控制

发布时间: 2013-07-16 22:38:04 作者: rapoo

远程抓取过来的数据进行循环控制



<tr>
<td width="4%"></td>
<td width="83%">
<a href="view.asp?Code=21541">[问题]测试测试测试</a>--
</td>
<td width="11%">2013-07-08</td>
<td width="2%"> </td>
</tr>

<tr>
<td width="4%"></td>
<td width="83%">
<a href="view.asp?Code=21541">[问题]测试测试测试</a>--
</td>
<td width="11%">2013-07-08</td>
<td width="2%"> </td>
</tr>

<tr>
<td width="4%"></td>
<td width="83%">
<a href="view.asp?Code=21541">[问题]测试测试测试</a>--


</td>
<td width="11%">2013-07-08</td>
<td width="2%"> </td>
</tr>

<tr>
<td width="4%"></td>
<td width="83%">
<a href="view.asp?Code=21541">[问题]测试测试测试</a>--
</td>
<td width="11%">2013-07-08</td>
<td width="2%"> </td>
</tr>

<tr>
<td width="4%"></td>
<td width="83%">
<a href="view.asp?Code=21541">[问题]测试测试测试</a>--
</td>
<td width="11%">2013-07-08</td>
<td width="2%"> </td>
</tr>

<tr>
<td width="4%"></td>


<td width="83%">
<a href="view.asp?Code=21541">[问题]测试测试测试</a>--
</td>
<td width="11%">2013-07-08</td>
<td width="2%"> </td>
</tr>

<tr>
<td width="4%"></td>
<td width="83%">
<a href="view.asp?Code=21541">[问题]测试测试测试</a>--
</td>
<td width="11%">2013-07-08</td>
<td width="2%"> </td>
</tr>

<tr>
<td width="4%"></td>
<td width="83%">
<a href="view.asp?Code=21541">[问题]测试测试测试</a>--
</td>
<td width="11%">2013-07-08</td>
<td width="2%"> </td>


</tr>



将以上抓取过来的数据进行循环可以控制数量
[解决办法]
on error resume next 
server.scripttimeout=9999999
function gethttppage(path)
t = getbody(path)
gethttppage=bytestobstr(t,"gb2312")
end function

’首先,进行小偷程式的一些初始化设置,以上代码的作用分别是忽略掉所有非致命性错误,把小偷程式的运行超时时间设置得非常长(这样不会出现运行超时的错误),转换原来默认的utf-8编码转换成gb2312编码,否则直接用xmlhttp组件调用有中文字符的网页得到的将是乱码。

function getbody(url)
on error resume next
set retrieval = createobject("microsoft.xmlhttp")
with retrieval
.open "get", url, false, "", ""
.send
getbody = .responsebody
end with
set retrieval = nothing
end function

’然后调用xmlhttp组件创建一个对象并进行初始化设置。

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
wstr=getHTTPPage("http://www.baidu.com")

最后只要把获取的内容,wstr 用正则匹配成数组就OK了
正则匹配我大略写一个如下:
Set regEx = New RegExp '建立正则表达式。   
regEx.Pattern = "<td width=""83%"">(.*?)<\/td><td width="11%">(.*?)<\/td>" '设置模式。
regEx.IgnoreCase = True '设置是否区分字符大小写。
regEx.Global = True '设置全局可用性。
Set Matches = regEx.Execute(wstr) '执行搜索。
For Each Match in Matches '遍历匹配集合。
'输出匹配内容
Response.Write Match.SubMatches(0)&"."&Match.SubMatches(1)&"<br>"


Next


这样就是抓取远程数据过来了,并且匹配了,自己调试一下正则吧,记得要编码不一致要转换一致哦

读书人网 >ASP

热点推荐