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

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

高难度的东西来了……………………

[复制链接]
发表于 2011-2-14 16:48:42 | 显示全部楼层 |阅读模式
http://www.sqsc.gov.cn/col/col19/index.html


采不到  网址规则   尴尬啊。。
 楼主| 发表于 2011-2-14 16:49:16 | 显示全部楼层
有人能找到它的 网址规则 吗?
发表于 2011-2-14 17:02:46 | 显示全部楼层
http://www.sqsc.gov.cn/col/col19/index.html


采不到  网址规则   尴尬啊。。
九九 发表于 2011-2-14 16:48


   属于POST采集,好好研究下~
发表于 2011-2-14 20:21:02 | 显示全部楼层
你好。可以采集的呀。
发表于 2011-2-15 21:00:15 | 显示全部楼层
本帖最后由 zhouchanglin 于 2011-2-19 12:44 编辑

这个网站是jq的,翻页是Ajax请求的

在源码里可以发现
  1. 这个js脚本函数,它是控制数据请求的关键:
  2. $('#325').jpage

  3. ({themeName:'default',showMode:'full',totalRecord:2508,openCookies:false,dataBefore:'<table

  4. width="99%" align="center"  border="0" cellpadding="0" cellspacing="0" style="margin-

  5. top:8px">',dataStore:InitData325,dataAfter:'</table>',groupSize:1,proxyUrl:'/module/jslib/jq

  6. uery/jpage/dataproxy.jsp',perPage:15,barPosition:'bottom',ajaxParam:

  7. {col:1,appid:'1',webid:1,path:'/',columnid:19,unitid:'325',webname:'宿城区政府外网门户网

  8. 站'}});
复制代码
把网页全部保存找到jquery.jpage js文件http://www.sqsc.gov.cn/module/jslib/jquery/jpage/jquery.jpage.js,可以找到这个函数,由于整个js文件都是这个函数,所以不贴出来了

以输入页数,并回车翻页为例,触发了下面的函数
  1. 页码输入框监听,下面这个函数当用户输入页码,并按回车时会翻页,Ajax请求
  2.                         valCurrentPage.keydown(
  3.                                 function(event){
  4.                                         var targetPage = parseInt($(this).val());
  5.                                         if(event.keyCode==13 && targetPage>=1 &&

  6. targetPage<=totalPage){
  7.                                                 if(!dataStore || gpStartPage > targetPage ||

  8. (gpEndPage > 0 && gpEndPage < targetPage)){
  9.                                                         currentPage = targetPage;
  10.                                                         getGroupStartEnd();
  11.                                                         getStartEnd();
  12.                                                         getRemoteData();//解决问题的关键的

  13. ajax请求的函数
  14.                                                 }else{
  15.                                                         currentPage = targetPage;
  16.                                                         getStartEnd();
  17.                                                         loadData();
  18.                                                         refresh();
  19.                                                 }
  20.                                         }
  21.                                 }
  22.                         );
复制代码
只把其中的关键的Ajax请求的函数贴出
  1. function getRemoteData(){
  2.                                 startLoad();//正在检索状态
  3.                                 $.ajax(//ajax请求
  4.                                         {
  5.                                                 type: "POST",
  6.                                                 url: proxyUrl + "?

  7. startrecord="+gpStartRecord+"&endrecord="+gpEndRecord+"&perpage="+perPage ,//请求地址
  8.                                                 cache: false,
  9.                                                 data: ajaxParam,//参数
  10.                                                 dataType: "script",//数据类型
  11.                                                 timeout: 30000,
  12.                                                 success: function(msg){//成功请求执行
  13.                                                         eval(msg);
  14.                                                         getStartEnd();
  15.                                                         loadData();//刷新数据容器,加载返回

  16. 数据
  17.                                                         refresh();//刷新工具栏状态
  18.                                                         overLoad();//结束检索状态
  19.                                                 },
  20.                                                 error: function(){
  21.                                                         alert("请求失败或超时,请稍后再

  22. 试!");
  23.                                                         overLoad();
  24.                                                         return;
  25.                                                 }
  26.                                         }
  27.                                 );
  28.                         }
  29.                        
复制代码
下拉框改变,点击上下页,输入页码,最后都要执行这个函数,发生Ajax请求


值得一提的是
  1. url: proxyUrl + "?

  2. startrecord="+gpStartRecord+"&endrecord="+gpEndRecord+"&perpage="+  ,//请求地址
复制代码
,这里有gpStartRecord和gpEndRecord  perPage  3个变量,分别代表数据开始位置,数据结束位置,每页数量,而前两个变量是由getGroupStartEnd()函数设置的,getGroupStartEnd()函数根据每页数量,当前页等信息,设置这2个变量,路默认是每页15条,那么第1页gpStartRecord=1  pEndRecord=15  ;第2页gpStartRecord=16  pEndRecord=30  ,就是间隔14的规律

这样把post地址http://www.sqsc.gov.cn/module/js ... d=15&perpage=15

连同post参数ajaxParam:
  1. col=1&appid=1&webid=1&path=/&columnid=19&unitid=325&webname=宿城区政府外网门户网站
复制代码
连接起来

就是Ajax的外部数据的地址了http://www.sqsc.gov.cn/module/js ... id=325&webname=宿城区政府外网门户网站
  1. 其中?后的参数的意思:
  2. startrecord------数据开始位置

  3. endrecord------数据结束位置

  4. perpage-----每页数量

  5. 下面的是谷歌翻译的,大概就是这个意思吧
  6. appid----------应用程序ID,
  7. webid----------网站id

  8. path-----路径

  9. columnid------------列ID

  10. unitid--------------单元ID

  11. webname-----------网站名称
复制代码
路过每页40条数据,那么第一页地址
  1. http://www.sqsc.gov.cn/module/jslib/jquery/jpage/dataproxy.jsp?startrecord=1&endrecord=40&perpage=40&col=1&appid=1&webid=1&path=/&columnid=19&unitid=325&webname=宿城区政府外网门户网站
复制代码
第2页
  1. http://www.sqsc.gov.cn/module/jslib/jquery/jpage/dataproxy.jsp?startrecord=41&endrecord=80&perpage=40&col=1&appid=1&webid=1&path=/&columnid=19&unitid=325&webname=宿城区政府外网门户网站
复制代码
发现了吧startrecord ,endrecord ,  perpage  ,3个参数要做些修改就行了

下面是那个js文件里的代码,我加了些其他注释,不能上传txt文件,所以用的压缩包


规则缺点是这个网站的分页地址火车头好像不能批量添加,因为地址有2个分页变量,可能借助其他的工具生成这样的地址会更方便
做采集规则发布模块,联系

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

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

GMT+8, 2025-7-12 13:50

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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