火车采集器软件交流官方论坛

 找回密码
 加入会员
搜索
火车采集器V9版免费下载火车浏览器 - 可视采集,万能群发,全自动脚本工具
查看: 10218|回复: 8

javascript之ajax网站采集实例

[复制链接]
发表于 2010-11-26 18:04:56 | 显示全部楼层 |阅读模式
本帖最后由 zhouchanglin 于 2010-11-26 18:10 编辑

这个站http://www.landscape.cn/news/xwzx.html


主要源码:
  1. <script src="/ks_inc/page.js"></script>
  2. <script language="javascript" defer>
  3. Page(1,'{SQL_新闻中心分页()}','20089156087841','/','plus/ajaxsql.asp','','');
  4. </script>
复制代码
http://www.landscape.cn、ks_inc/page.js里德源码的主要部分
  1. function Page(curPage,labelid,classid,installdir,url,refreshtype,specialid)
  2.    {
  3.    this.labelid=labelid;
  4.    this.classid=classid;
  5.    this.url=url;
  6.    if (labelid.substring(0,5)=="{SQL_")
  7.    {
  8.         var slabelid=labelid.split('(')[0];
  9.     slabelid=slabelid.replace("{","");
  10.     this.c_obj="c_"+slabelid;
  11.     this.p_obj="p_"+slabelid;
  12.    }
  13.    else
  14.    {
  15.    this.c_obj="c_"+labelid;
  16.    this.p_obj="p_"+labelid;
  17.    }
  18.    this.installdir=installdir;
  19.    this.refreshtype=refreshtype;
  20.    this.specialid=specialid;
  21.    this.page=curPage;
  22.    loadData(1);

  23.    }
复制代码
加载数据,发送ajax请求
  1. function loadData(p)
  2. {  this.page=p;
  3.    var xhr=new PageAjax();
  4.    xhr.open("get",installdir+url+"?labelid="+escape(labelid)+"&classid="+classid+"&refreshtype="+refreshtype+"&specialid=" +specialid+"&curpage="+p+getUrlParam(),true);
  5.    xhr.onreadystatechange=function (){
  6.                  if(xhr.readyState==1)
  7.                           {
  8.                                  if (p==1)
  9.                                 eval('document.all.'+c_obj).innerHTML="<div align='center'><img src='"+installdir+"images/loading.gif'>正在连接服务器...</div>";
  10.                           }
  11.                           else if(xhr.readyState==2 || xhr.readyState==3)
  12.                           {
  13.                                 if (p==1)
  14.                                 eval('document.all.'+c_obj).innerHTML="<div align='center'><img src='"+installdir+"images/loading.gif'>正在读取数据...</div>";
  15.                           }
  16.                           else if(xhr.readyState==4)
  17.                           {
  18.                          if (xhr.status==200)
  19.                          {
  20.                                   var pagearr=xhr.responseText.split("{ks:page}")
  21.                                   var pageparamarr=pagearr[1].split("|");
  22.                                   count=pageparamarr[0];   
  23.                                   perpagenum=pageparamarr[1];
  24.                                   pagecount=pageparamarr[2];
  25.                                   itemunit=pageparamarr[3];   
  26.                                   itemname=pageparamarr[4];
  27.                                   pagestyle=pageparamarr[5];
  28.                                   getObject(c_obj).innerHTML=pagearr[0];
  29.                                   pagelist();
  30.                          }
  31.                         }
  32.            }
  33.     xhr.send(null);
  34. }
复制代码
设置页码:
  1. function pagelist()
  2. {
  3. var n=1;       
  4. var statushtml=null;
  5. switch(parseInt(this.pagestyle))
  6. {
  7.   case 1:       
  8.     太长了略去。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  9.          statushtml+="&nbsp;第<select name="goto" onchange="turn(parseInt(this.value));">";
  10.           for(var i=1;i<=this.pagecount;i++){
  11.                  if (i==this.page)
  12.                  statushtml+="<option value='"+i+"' selected>"+i+"</option>";
  13.                  else
  14.                  statushtml+="<option value='"+i+"'>"+i+"</option>";
  15.           }       
  16.          statushtml+="</select>页";
  17.          getObject(this.p_obj).innerHTML=statushtml;
  18. }
复制代码
加载某页的数据的函数,请求都是它触发的
function turn(i)
{
     loadData(i);
}
  1. xhr.open("get",installdir+url+"?labelid="+escape(labelid)+"&classid="+classid+"&refreshtype="+refreshtype+"&specialid=" +specialid+"&curpage="+p+getUrlParam(),true);
复制代码
这段是最重要的,可以找到ajax请求的地址

通过Page(1,'{SQL_新闻中心分页()}','20089156087841','/','plus/ajaxsql.asp','','');和function Page(curPage,labelid,classid,installdir,url,refreshtype,specialid)可以了解到传递的参数的意识:curpage=1---页数;labelid={SQL_新闻中心分页()};classid=20089156087841;installdir-------'/';url=plus/ajaxsql.asp;可以得到请求的地址是http://www.landscape.cn/plus/ajaxsql.asp?labelid={SQL_新闻中心分页()}&classid=20089156087841&refreshtype=&specialid=&curpage=1;

只要这样加列表就行了http://www.landscape.cn/plus/ajaxsql.asp?labelid={SQL_新闻中心分页()}&classid=20089156087841&refreshtype=&specialid=&curpage=页数,这个网站总页数是50,{ks:page}500|10|50|篇||2打开后这部分都有处理,分别代表总量,每页个数,总页数

规则还有问题,猜不到网址,浏览器都可以看到地址,火车里源码查看页可以,在内容测试时【内容】:对不起,标签不存在!{ks:page}|||||,怎么回事

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入会员

x
发表于 2010-12-8 22:12:21 | 显示全部楼层
确实满复杂的,学习中……
发表于 2010-12-18 10:09:44 | 显示全部楼层
http://www.landscape.cn/plus/ajaxsql.asp?labelid=%7BSQL_%u65B0%u95FB%u4E2D%u5FC3%u5206%u9875%28%29%7D&classid=20089156087841&refreshtype=&specialid=&curpage=分页&=undefined

我发现这个也可以。哈
发表于 2011-3-6 11:43:18 | 显示全部楼层
好好学习一下好好学习一下好好学习一下好好学习一下
发表于 2012-5-3 17:32:31 | 显示全部楼层
看是看不懂了  只能膜拜了               
发表于 2012-7-10 10:09:16 | 显示全部楼层
=.=好复杂啊{:soso_e136:}
发表于 2012-11-13 16:17:32 | 显示全部楼层
直接截包估计简单点
发表于 2013-4-19 16:04:23 | 显示全部楼层
贵州白癜风医院
贵阳白癜风医院
贵阳白癜风专科医院
贵阳治疗白癜风医院
贵阳最好的白癜风医院
贵阳林城医院
贵阳林城医院 白癜风能治愈吗
六盘水哪家白癜风医院最好
六盘水最好白癜风医院
六盘水白癜风医院
六盘水技术最好的白癜风医院
凯里白癜风医院
遵义最好白癜风医院
遵义白癜风医院
遵义技术最好的白癜风医院
遵义哪家白癜风医院最好
毕节最好白癜风医院
毕节哪家白癜风医院最好
毕节白癜风医院
毕节技术最好的白癜风医院
毕节哪家医院治白癜风最好
发表于 2013-4-24 20:26:19 | 显示全部楼层
怎么也看不懂,最近就遇到这样的问题
您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

QQ|手机版|Archiver|火车采集器官方站 ( 皖ICP备06000549 )

GMT+8, 2024-11-25 01:44

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表