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

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

js post网站专区

[复制链接]
 楼主| 发表于 2010-12-23 15:38:15 | 显示全部楼层
本帖最后由 zhouchanglin 于 2010-12-23 15:40 编辑

不对,是你这个和 技嘉金牌主板.ljob 的那个网站基本一样,只是内容页有个跳转,只要用之定义网址,这个问题也很容易解决了

你可以参考 技嘉金牌主板 的采集方法,这2个网站一样的

本帖子中包含更多资源

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

x
发表于 2010-12-29 16:39:43 | 显示全部楼层
麻烦楼主一下
http://www.efu.com.cn/corp/list.aspx?ProvinceId=110000
这个网址~~~我弄的始终都是采集第一页。。看了你前两个差不多一样 按照那个来 还是不行~!
发表于 2010-12-29 17:27:24 | 显示全部楼层
楼主 不用麻烦你了 刚才仔细看了 你前几个的案例,又仔细的分析了下 终于弄好了。
EVENTTARGET 就是因为这个导致我无法采集第二页  直接给他一个值AspNetPager1 就可以了。。
发表于 2011-1-10 21:20:07 | 显示全部楼层
我是新手,可否麻烦楼主帮忙写个这个图集http://pic.auto.163.com/autopic/mmindex.html的采集规则?谢谢先
发表于 2011-1-12 14:53:14 | 显示全部楼层
请楼主帮忙,先谢了。
1,http://www.phoenix21.net/engine/ ... emp_Id=328&p=93
采集具体通知内容
2,http://gonggao.gdstc.gov.cn/item ... thod=Item_List_Data
采每个分页内容。
发表于 2011-1-12 15:31:21 | 显示全部楼层
能帮忙住模块吗。。。。。。。。。。。
发表于 2011-1-12 15:36:54 | 显示全部楼层
本帖最后由 mislt 于 2011-1-12 15:39 编辑

http://beauty.rayli.com.cn/region/C0003014.html
帮下忙,谢谢,可以把列表中的图片去掉吗?或者一个有图片一个没图片的,做两个
 楼主| 发表于 2011-1-12 17:16:50 | 显示全部楼层
本帖最后由 zhouchanglin 于 2011-1-13 10:45 编辑

回复 25# alfred007
第一个做好了


刚开始看上去这个网站只是普通post而已,post的处理函数也比较简单,但右键直接查看源码看到的是真实的源码,但这个源码却是在框架里调用了的地址的,

用浏览器工具栏查看源码得到主体的源码,这里面在一个框架里调用了用户点击的网址,实现了地址栏无变化,蒙骗了我们的眼睛,实际上鼠标悬停在目标连接,笔录状态栏已经显示了它真正的地址,只是点击时被主页面调用了

在这个页面
  1. http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=328&p=80&t=81
复制代码
查看源码,不要用右键,否则看到的是调用的网址源码,在源码里会看到
  1. <IFRAME
  2.             name=main frameBorder=0 width="100%" height="100%" scrolling="no"></IFRAME>
复制代码
这个就是那个框架,是网页右边列表区域


下面比路点击 通知公告时,看它的触发的函数
  1. <a href="../engine/gettemplate.jsp?temp_Id=330&a=93" id="m_93" onclick="return showMenu('93', this)">通知公告</a>
复制代码
可以知道触发了
  1. showMenu('93', this)
复制代码
  1. function showMenu(id, obj)
  2. {
  3.     var _o = document.getElementById("t_" + id);//---------id为t_93的层,包含通知公告的子栏目
  4.     var _img = document.getElementById("img_" + id);---------img_93,通知公告的状态图片
  5.     document.getElementById("mainTitle").style.display = "";
  6.         document.getElementById("searchTitle").style.display = "none"
  7.     if(_o == null) return;
  8.     if(_o.style.display != "none")-----------路过t_93显示
  9.     {
  10.         _o.style.display = "none";----------隐藏
  11.         _img.src = "../kxptweb/images/zw_a05.gif";
  12.         _img.width = 5;
  13.         _img.height = 9;
  14.                
  15.                 if(obj != null)-----------对象存在
  16.                         {
  17.                                 var _s = new String(obj.href);----------通知公告的连接地址字符串
  18.                                 document.getElementById("itemTitle").innerText = obj.innerText;
  19.                                 changeNavigatHtml(obj.innerText);
  20.                                 if(_s.substring(_s.length-7) != "engine/")
  21.                                 {
  22.                                         frames("main").location = obj.href;----------------------[b]这个是最重要的,在前面那个框架里调用通知公告的连接地址[/b]
  23.                                         mainUrl= obj.href;
  24.                                         //alert(_s.indexOf("&a="));
  25.                                         if(_s.indexOf("banshishixiang.jsp") != -1) document.getElementById("mainTitle").style.display = "none";
  26.                                         if(_s.indexOf("&a=") != -1) document.getElementById("searchTitle").style.display = "";----------显示搜索条
  27.                                 }
  28.                                 else
  29.                                 {
  30.                                         frames("main").location = "about:blank";
  31.                                 }
  32.                                 var ls = _o.all.tags("A");
  33.                                 if(ls.length > 0) s(ls[0]);
  34.                         }
  35.                 }后面else的略去了。。。。。。。。。。
复制代码
这样知道了是调用,在源码里查看对应栏目的地址,就可以了,路通知公告地址直接用http://www.phoenix21.net/engine/ ... emp_Id=330&a=93就可以了

当然还要看这个地址里的源码,这里有翻页,下面是这个地址的页脚部分
  1. <table width="100%" height="20" border="0" cellpadding="1" cellspacing="1">
  2.        <tr class="rs2">
  3.         <td height="20" valign="bottom">
  4.            第&nbsp;1&nbsp;页&nbsp;/&nbsp;共&nbsp;5&nbsp;页
  5.         </td>
  6.         <td width="52" valign="bottom">首&nbsp;页</td><td width="52" valign="bottom">上一页</td><td width="52" valign="bottom"><a href="javascript:goPage('frmQuery_c_56_278',2);">下一页</a></td><td width="52" valign="bottom"><a href="javascript:goPage('frmQuery_c_56_278',5);">末&nbsp;页</a></td><td valign="bottom">至<select onchange="javascript:goPage('frmQuery_c_56_278',this.options[this.selectedIndex].value);">     <option  value="1" selected>1</option>
  7.      <option  value="2">2</option>
  8.      <option  value="3">3</option>
  9.      <option  value="4">4</option>
  10.      <option  value="5">5</option>
  11. </select>页</td>      </tr>    </table>
复制代码
可以知道翻页都是触发了
  1. goPage()
复制代码
,这个函数在http://www.phoenix21.net/engine/sinc/scriptForView.js里,找到gopage
  1. function goPage(frmObj, page)
  2. {
  3.     var frm = eval("document." + frmObj);
  4.     frm.currentPage.value = page;
  5.     frm.submit();
  6. }
复制代码

以点击第5页,goPage('frmQuery_c_56_278',5)为例,根据翻页函数可以知到frmQuery_c_56_27是表单的名字,第2个参数是第几页,把这个表单currentPage就是页码,然后提交frmQuery_c_56_27表单,可以用get请求分页,一定要post的好像参数是asp的那些eventtarget等,

frmQuery_c_56_27表单
  1. <form name="frmQuery_c_56_278" style="display:none" method="post" action="gettemplate.jsp?temp_Id=330&a=93">
  2. <input type="hidden" name="totalPage" value="5">
  3. <input type="hidden" name="currentPage" value="1">
  4. <input type="hidden" name="otherSortField" value="">
  5. </form>
复制代码
这样翻页地址就是
  1. http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=330&a=93&totalPage=5&currentPage=分页&otherSortField=
复制代码
路第3页是http://www.phoenix21.net/engine/ ... amp;otherSortField=

在采内容页网址时遇到了一个问题就是内容页地址是
  1. <a href="../engine/gettemplate.jsp?temp_Id=7&querystring=info.guid='{BFA80101-0000-0000-179D-148AFFFFFF8F}'&pid=93" target="_blank">宝安区2010年第二批科技计划项目拟立项公示</a>
复制代码
自动识别出错,它识别成http://www.phoenix21.net/engine/ ... FFFFF8F}&pid=93,没有那2个单引号,好像是软件会过滤掉,自定义网址仍然会被过滤,不知道这是否bug

正确的http://www.phoenix21.net/engine/ ... rystring=info.guid=
最后编码了',才行,也可以先导出网址,修改后在导入

本帖子中包含更多资源

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

x
 楼主| 发表于 2011-1-12 18:48:45 | 显示全部楼层
回复 25# alfred007

第2个,分页即使内容页,分页可以用get访问,用循环采集数据

分页地址各式
  1. http://gonggao.gdstc.gov.cn/itemListAction.do?method=Item_List_Data&pagesize=10&currentPage=分页&itemStatus=&slNo=&itemCode=&orderNo=&orgName=&operType=
复制代码
路第5页http://gonggao.gdstc.gov.cn/item ... Name=&operType=

各个参数的意识:
  1. pagesize-----每页数量,可以[10][20][50][100]【200】

  2. currentPage----------页码


  3. slNo------------受理编号


  4. itemCode-------------------项目编号

  5. orderNo----------下达文号

  6. orgName--------承担单位

  7. operType---------------业务类型
复制代码
修改参数可以有不同的结果

本帖子中包含更多资源

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

x
 楼主| 发表于 2011-1-12 21:06:25 | 显示全部楼层
本帖最后由 zhouchanglin 于 2011-1-14 20:01 编辑

回复 24# 023xiebo

在这个页面源码里调用了
  1. <div class="cnt-right">
  2.                 <iframe  src="mmindexmain.html" name="NT_PHVIEW" style="width: 735px;" onload="this.height=NT_PHVIEW.document.body.scrollHeight" scrolling="no"  frameborder="0" marginwidth="0" border="0" id="NT_PHVIEW"></iframe>
  3.             </div>
复制代码
调用地址http://pic.auto.163.com/autopic/mmindexmain.html,查看它的源码
下面就是分页控制的相关函数
  1. <script type="text/javascript">
  2.         
  3.          
  4.                         function pageselectCallback(page_index, jq){

  5.                 $.ajax({ //一个Ajax过程
  6.                                                 type: "post", //以post方式与后台沟通
  7.                                                 url : "http://pic.auto.163.com/autopic/senddatammindexmain.jsp", //与此php页面沟通
  8.                                                 dataType:'script',//从jsp返回的值以 script方式 解释
  9.                                                 data: 'pageindex='+page_index, //
  10.                                                 success: function(script){//如果调用php成功
  11.                                                
  12.                                                  $('#Searchresult').empty().append(script);
  13.                                                 }
  14.                                                 });

  15.                
  16.                 return false;
  17.             }
  18.            
  19.          
  20.             function initPagination() {
  21.                
  22.                 $("#Pagination").pagination(3, {
  23.                     num_edge_entries: 2,
  24.                     num_display_entries: 4,
  25.                     prev_text:'上一页',
  26.                     next_text:'下一页',
  27.                     callback: pageselectCallback,
  28.                     items_per_page:1
  29.                 });
  30.              }
  31.                     
  32.             
  33.             $(document).ready(function(){      
  34.                 //$('#Searchresult').load('http://pic.auto.163.com/autopic/senddatammindexmain.jsp', null, initPagination);
  35.                 initPagination();
  36.             });

  37.         </script>
复制代码
有自己框架的网站不好分析,看不懂,翻页大概就是
  1. http://pic.auto.163.com/autopic/senddatammindexmain.jsp?pageindex=分页
复制代码
第1页http://pic.auto.163.com/autopic/ ... ain.jsp?pageindex=0
第2页http://pic.auto.163.com/autopic/ ... ain.jsp?pageindex=1
第3页http://pic.auto.163.com/autopic/ ... ain.jsp?pageindex=2

从0开始,显示页码-1

,在点击初始列表分页http://pic.auto.163.com/autopic/ ... ain.jsp?pageindex=0里德一个内容页时,路http://pic.auto.163.com/autopic/mmshowindex/topicid=28JE0008.html 后,这个页面跳转至http://pic.auto.163.com/autopic/ ... picid=28JE0008.html,而这个跳转后的页面又在
  1. <iframe name="NT_PHVIEW" style="width:735px;" onload="this.height=NT_PHVIEW.document.body.scrollHeight" scrolling="no"  frameborder="0" src="" marginwidth="0" border="0" id="NT_PHVIEW"></iframe>
复制代码
依然是调用这个内容页,也就是URL参数后的

不用管这些,内容页直接测试http://pic.auto.163.com/autopic/mmshowindex/topicid=28JE0008.html 就可以

在这个页面测试,没有想到也是Ajax请求
  1. <div class="cbd2" id="Searchresult" >
  2.                     
  3.                                          正在载入数据……
  4.                     </div>

复制代码
用的下面的函数,和前面的差不多
  1. pageselectCallback(page_index, jq){

  2.                 $.ajax({ //一个Ajax过程
  3.                                                 type: "post", //以post方式与后台沟通
  4.                                                 url : "http://pic.auto.163.com/autopic/senddatammshowindexmain.jsp", //与此php页面沟通
  5.                                                 dataType:'script',//从jsp返回的值以 script方式 解释
  6.                                                 data: 'pageindex='+page_index+'&topicid=4DU30008', //
  7.                                                 success: function(script){//如果调用php成功
  8.                                                
  9.                                                  $('#Searchresult').empty().append(script);
  10.                                                 }
  11.                                                 });

  12.                
  13.                 return false;
  14.             }
  15.    
复制代码
这样要用自定义采集了,内容页地址http://pic.auto.163.com/autopic/ ... main.jsp?pageindex=这个内容页的分页&topicid=4DU30008,分页依然是从0开始

http://pic.auto.163.com/autopic/ ... mp;topicid=4DU30008
点击吃页面下的内容页,
  1. <ul class="clearfix"><li><a target="_blank" href="http://auto.163.com/photoview/4DU30008/133451.html#q=1"><img height="210" width="140" alt=赛车宝贝 src="http://img4.cache.netease.com/photo/0008/2010-12-06/t_6N6EKJI84DU30008.JPG" /></a><h3><a target="_blank" href="http://auto.163.com/photoview/4DU30008/133451.html#q=1">赛车宝贝</a></h3></li>
复制代码
,路http://auto.163.com/photoview/4DU30008/133451.html#q=1进入真正要采的内容页,又有分页,4,5层内容页面,好在这个最后的内容页图片地址都在在第一页里了,总的栓起来是4层网站,这样的用内容页分页是可以踩得,不过这个网站到这步分页会有不同的主题,所以可以导出一级,导入,再导出一级,这样就可以了,变成采内容时无分页的

全部可以采到了,这步的分页地址手动添加的http://pic.auto.163.com/autopic/mmshowindex/topicid=28JE0008.html,这样就可以了,图片可下载,每个主题一组图片

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-18 18:19

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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