如何获取这个网页上的数据? ( 积分: 100 )

  • 主题发起人 主题发起人 ooooh
  • 开始时间 开始时间
O

ooooh

Unregistered / Unconfirmed
GUEST, unregistred user!
网址如下:
http://lotterychart.sports.cn/table/index_pai3_table.jsp?lotteryid=4
它是用了2个JS文件来做的。
用DELPHI如何编写才能直接获取指定期数的数据?获取数据后要保存到*.txt文件中。
 
直接下载 分析HTML文件就可
 
问题就在于它要打开网页来向数据页发送命令,才能获取指定范围的数据。这点我不懂解决。我要在不打开网页的情况下获取相应的数据。它调用了2个JS(json.js datanumfunc.js)文件来获取数据。
 
我看了一下脚本
你要做的就是把脚本转到delphi代码啊!
var xmlHttp;
var lott;
var isEnd = "true";

function checkDataNum() {
if(document.all['startNum'].value == ""){
alert("还未选择开始期次!");
return false;
}else if(document.all['endNum'].value == ""){
alert("还未选择结束期次!");
return false;
}else if (isEnd=="fasle"){
alert("对不起,您选择的开始期次不能大于结束期次!");
return false;
}
}

function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}

function showDataNum(lo) {
lott = lo;
var lottery = getLotteryObject(lo);
var lotteryAsJSON = JSON.stringify(lottery);
var url = "/datadeal/tools/CreateDataNum?timeStamp=" + new Date().getTime();
createXMLHttpRequest();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(lotteryAsJSON);
}

function selStartDataNum() {
var startDataNum = document.all['startNum'].options[document.all['startNum'].selectedIndex].text;
var endDataNum = document.all['endNum'].options[document.all['endNum'].selectedIndex].text;
if(endDataNum=="--请选择期号--"){
var url = "/datadeal/tools/SelDataNum?lotteryid="+ lott +"&datanum="+ startDataNum +"&mode=start&timeStamp=" + new Date().getTime();
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = startNumChange;
xmlHttp.send(null);
}else if (startDataNum>=endDataNum){
isEnd = "fasle";
alert("对不起,您选择的开始期次不能大于结束期次!");
}
}

function selEndDataNum() {
var endDataNum = document.all['endNum'].options[document.all['endNum'].selectedIndex].text;
var url = "/datadeal/tools/SelDataNum?lotteryid="+ lott +"&datanum="+ endDataNum +"&mode=end&timeStamp=" + new Date().getTime();
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = endNumChange;
xmlHttp.send(null);
}

function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
parseResults();
}
}
}

function startNumChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
startNumResults();
}
}
}

function endNumChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
endNumResults();
}
}
}

function parseResults() {
// 信息已经成功返回,开始处理信息
var startDataNumField = null;
var endDataNumField = null;
startDataNumField = document.getElementById('startNum');
endDataNumField = document.getElementById('endNum');
//清空option对象
startDataNumField.length=1;
endDataNumField.length=1;
var strDataNum = xmlHttp.responseText;
var dataNums = strDataNum.split("|");
for (var i=0;i<dataNums.length;i++){
//循环取出信息
var eachDataNum = dataNums.split(&quot;;&quot;);
var dataNum = eachDataNum[0];
var startDate = eachDataNum[1];
// 新建一个OPTION对象
var startfield = document.createElement(&quot;option&quot;);
var endfield = document.createElement(&quot;option&quot;);
// 设置OPTION对象的值
startfield.value = dataNum;
endfield.value = dataNum;
// 设置OPTION对象的内容
startfield.innerHTML = dataNum;
endfield.innerHTML = dataNum;
// 添加到球队select对象
startDataNumField.appendChild(startfield);
endDataNumField.appendChild(endfield);
}
}

function startNumResults() {
// 信息已经成功返回,开始处理信息
var endDataNumField = null;
endDataNumField = document.getElementById('endNum');
if(endDataNumField.value==&quot;&quot;){
//清空option对象
endDataNumField.length=1;
var strDataNum = xmlHttp.responseText;
var dataNums = strDataNum.split(&quot;|&quot;);
for (var i=0;i<dataNums.length;i++){
//循环取出信息
var eachDataNum = dataNums.split(&quot;;&quot;);
var dataNum = eachDataNum[0];
var endDate = eachDataNum[1];
// 新建一个OPTION对象
var endfield = document.createElement(&quot;option&quot;);
// 设置OPTION对象的值
endfield.value = dataNum;
// 设置OPTION对象的内容
endfield.innerHTML = dataNum;
// 添加到球队select对象
endDataNumField.appendChild(endfield);
}}
}

function endNumResults() {
// 信息已经成功返回,开始处理信息
var startDataNumField = null;
startDataNumField = document.getElementById('startNum');
if(startDataNumField.value==&quot;&quot;){
//清空option对象
startDataNumField.length=1;
var strDataNum = xmlHttp.responseText;
var dataNums = strDataNum.split(&quot;|&quot;);
for (var i=0;i<dataNums.length;i++){
//循环取出信息
var eachDataNum = dataNums.split(&quot;;&quot;);
var dataNum = eachDataNum[0];
var startDate = eachDataNum[1];
// 新建一个OPTION对象
var startfield = document.createElement(&quot;option&quot;);
// 设置OPTION对象的值
startfield.value = dataNum;
// 设置OPTION对象的内容
startfield.innerHTML = dataNum;
// 添加到球队select对象
startDataNumField.appendChild(startfield);
}}
}

function getLotteryObject(lo) {
var lotteryid = lo;
return new Lottery(lotteryid);
}

function Lottery(lotteryid) {
this.lotteryid = lotteryid;
}

function SetMyFrameHeight(obj){
var myFrame=obj;
if (document.getElementById)
{
if (myFrame &amp;&amp; !window.opera)
{
if (myFrame.contentDocument &amp;&amp; myFrame.contentDocument.body.offsetHeight){
myFrame.height = myFrame.contentDocument.body.offsetHeight;
}
else if(myFrame.Document &amp;&amp; myFrame.Document.body.scrollHeight){
myFrame.height = myFrame.Document.body.scrollHeight;
}
}
}
}
 
我试了一个:
http://lotterychart.sports.cn/datadeal/tools/SelDataNum?lotteryid=4&amp;datanum=07212&amp;mode=end&amp;timeStamp=2007-11-5

他显示出来是以“|”各开的字符串,你需要解析他
 
to Dstorm:
我将网址改了改,添加了datanum=07290&amp;mode=start得到了指定的起止期数及开奖时间,但是没有开奖号码啊?!而且我设置的起止期数为290-300,但只返回了291-300的数据。不知为何没有290的数据?
如果能通过类似下面的网址得到开奖号码,就不用将JS代码转换了,对不?
http://lotterychart.sports.cn/datadeal/tools/SelDataNum?lotteryid=4&amp;datanum=07290&amp;mode=start&amp;datanum=07300&amp;mode=end&amp;timeStamp=2007-11-5
 
mode=start原来是开始,不包含该期号。
但是开奖号码从哪儿得到的仍未知。
请高手们继续指点!
 
后退
顶部