首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

怎的取得这个页面中的数据存入ASP变量

2013-06-25 
怎样取得这个页面中的数据存入ASP变量?想到这个页面:http://zst.cjcp.com.cn/cjwk3/view/kuai3_zonghe.php

怎样取得这个页面中的数据存入ASP变量?
想到这个页面:http://zst.cjcp.com.cn/cjwk3/view/kuai3_zonghe.php?lotteryType=gx
中的“期号”和“奖号”数据并存入ASP变量,请教代码?
1、整个页面的所有“期号”和“奖号”一起循环取得。
2、能不能指定某一期的期号去取?例如我指定要取期号为“20130508059”的“奖号”数据可以实现吗?

请提供代码,不要光说用什么ajax的方法正则取得,我不太懂ajax,谢谢了。
[解决办法]
function getvalue(qihao)
  Set xhr= Server.CreateObject("microsoft.xmlhttp")
  xhr.open "get","http://zst.cjcp.com.cn/cjwk3/view/kuai3_zonghe.php?lotteryType=gx",false
  xhr.send
  text= xhr.responsetext
  set xhr=nothing
  startp=instr(text,"<tbody id=""pagedata"">")+len("<tbody id=""pagedata"">")
  endp=instr(startp,text,"</tbody>")
  text=mid(text,startp,endp-startp)
  set rx=new regexp
  rx.Global=true
  rx.IgnoreCase=true
  rx.Pattern="<td class='z_bg_05'>(\d+)</td><td class='z_bg_13'>(\d+)</td>"
  set mc=rx.Execute(text)

  set rx=nothing
  if qihao<>"" then
    for each m in mc
      if m.submatches(0)=qihao then
        getvalue=m.submatches(1)
        exit function
      end if
    next
  else
    for each m in mc 
      getvalue=getvalue&"期号:"&m.submatches(0)&"  奖号:"&m.submatches(1)&"<br/>"
    next
  end if
  set mc=nothing
end function

response.write getvalue("20130508047")&"<br/>"
response.write getvalue("20130508049")&"<br/>"
response.write getvalue("")'获取所有参数设置为""
[解决办法]


'这和前面两个问题不是一样的吗?
<!--#include file="easp.asp"-->
<%
Easp.BasePath = ""
Easp.Use("Http")

Dim url, tmp, arr, perdid, awardcode
Dim item
url = "http://zst.cjcp.com.cn/cjwk3/view/kuai3_zonghe.php?lotteryType=gx"
tmp = Easp.Http.Get(url)
arr = Easp.Http.Search("<td class='z_bg_05'>\d{11}</td><td class='z_bg_13'>\d{3}</td>")
For Each item In arr
    '先找到期号
    perdid = Easp.Http.SubStr_(item, "<td class='z_bg_05'>", "</td>", "")
    '再查找开奖号码
    awardcode = Easp.Http.SubStr_(item, "<td class='z_bg_13'>", "</td>", "")
    Easp.WN "期号:" & perdid & " 开奖号码:" & awardcode
Next

'获取该页面指定期号的开奖号码
Easp.WN ""
Easp.WN GetAwardcode("20130508044")

Public Function GetAwardcode(ByVal perdid)
    If InStr(tmp, perdid) > 0 Then


        GetAwardcode = Easp.Http.SubStr("<td class='z_bg_05'>" & perdid & "</td><td class='z_bg_13'>", "</td>", "")
    Else
        GetAwardcode = "ERROR"
    End If
End Function
%>




'得到的结果
期号:20130508043 开奖号码:156
期号:20130508044 开奖号码:455
期号:20130508045 开奖号码:123
期号:20130508046 开奖号码:135
期号:20130508047 开奖号码:446
期号:20130508048 开奖号码:146
期号:20130508049 开奖号码:135
期号:20130508050 开奖号码:366
期号:20130508051 开奖号码:136
期号:20130508052 开奖号码:445
期号:20130508053 开奖号码:256
期号:20130508054 开奖号码:245
期号:20130508055 开奖号码:146
期号:20130508056 开奖号码:235
期号:20130508057 开奖号码:555
期号:20130508058 开奖号码:244
期号:20130508059 开奖号码:112
期号:20130508060 开奖号码:144
期号:20130508061 开奖号码:356
期号:20130508062 开奖号码:114
期号:20130508063 开奖号码:115
期号:20130508064 开奖号码:114
期号:20130508065 开奖号码:346
期号:20130508066 开奖号码:356
期号:20130508067 开奖号码:345
期号:20130508068 开奖号码:346
期号:20130508069 开奖号码:344
期号:20130508070 开奖号码:146
期号:20130508071 开奖号码:135
期号:20130508072 开奖号码:234

455

[解决办法]
那个是一个正则

\d在正则里表示的是10个数字0123456789,{11}表示的是11位数字,也就是表示要取多少位

第二个才是要取的期号,你是代码里哪个功能是知道要取第二个中数值?谢谢回答

在这个程序里$1匹配的是第一个(\d+),$2对应的是第二个(\d+)
[解决办法]

arr = Easp.Http.Search("<td class='z_bg_05'>\d{11}</td><td class='z_bg_13'>\d{3}</td>")
 请帮解释这一句的意思,为什么有时是d{11}有时是d{3}这个括号里面的数值是根据什么设定的?
'\d{11}表示11个数字,也就是11个数的期号,\d{3}表示3个数字,也就是3个数的开奖号码


 另外我看了一下源码其中期号<td class='z_bg_05'></td>是在这个区段内的,但是第一个是序号,第二个才是要取的期号,你是代码里哪个功能是知道要取第二个中数值?谢谢回答
'<td class='z_bg_05'>1</td><td class='z_bg_05'>20130508057</td>
'就是根据\d{11}来判断的,序号不是11位数字,期号是11位数字

总的来说
'<td class='z_bg_05'>\d{11}</td><td class='z_bg_13'>\d{3}</td>
'<td class='z_bg_05'>11个数字</td><td class='z_bg_13'>3个数字</td>
'就是从源码里查找符合上面一行条件的字符串,可能找到0或多个
'然后再从多个结果里一个一个提取11位的期号,和3位的开奖号码



[解决办法]
引用:
谢谢各位的回答,在这里我还想问一个有点题外的话,是不是只要网页能够被浏览器显示,那么显示的内容就一定会被这种用程序抓取的方式被别的网站获取?有没有防止别人网站用这种程序获取自己网站内容的方法?
就如上面的例子,开奖期号是存在于<td class='z_bg_05'>\d{11}</td>这个代码中,那如果我用程序输出的时候让它输出成为<td class='z_bg_05' id='随机数'>这样每个显示期号的单元都不一样,是不是就可以防止程序获取了?


只是稍稍加大了一点偷的难度,没办法根本防止。

热点排行