zhouchanglin 发表于 2010-12-23 15:38:15

本帖最后由 zhouchanglin 于 2010-12-23 15:40 编辑

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

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

tiandao 发表于 2010-12-29 16:39:43

麻烦楼主一下
http://www.efu.com.cn/corp/list.aspx?ProvinceId=110000
这个网址~~~我弄的始终都是采集第一页。。看了你前两个差不多一样 按照那个来 还是不行~!

tiandao 发表于 2010-12-29 17:27:24

楼主 不用麻烦你了 刚才仔细看了 你前几个的案例,又仔细的分析了下 终于弄好了。
EVENTTARGET 就是因为这个导致我无法采集第二页直接给他一个值AspNetPager1 就可以了。。

023xiebo 发表于 2011-1-10 21:20:07

我是新手,可否麻烦楼主帮忙写个这个图集http://pic.auto.163.com/autopic/mmindex.html的采集规则?谢谢先

alfred007 发表于 2011-1-12 14:53:14

请楼主帮忙,先谢了。
1,http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=328&p=93
采集具体通知内容
2,http://gonggao.gdstc.gov.cn/itemListAction.do?method=Item_List_Data
采每个分页内容。

mislt 发表于 2011-1-12 15:31:21

能帮忙住模块吗。。。。。。。。。。。

mislt 发表于 2011-1-12 15:36:54

本帖最后由 mislt 于 2011-1-12 15:39 编辑

http://beauty.rayli.com.cn/region/C0003014.html
帮下忙,谢谢,可以把列表中的图片去掉吗?或者一个有图片一个没图片的,做两个

zhouchanglin 发表于 2011-1-12 17:16:50

本帖最后由 zhouchanglin 于 2011-1-13 10:45 编辑

回复 25# alfred007
第一个做好了


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

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

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


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

当然还要看这个地址里的源码,这里有翻页,下面是这个地址的页脚部分<table width="100%" height="20" border="0" cellpadding="1" cellspacing="1">
       <tr class="rs2">
      <td height="20" valign="bottom">
         第&nbsp;1&nbsp;页&nbsp;/&nbsp;共&nbsp;5&nbsp;页
      </td>
      <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.value);">   <optionvalue="1" selected>1</option>
   <optionvalue="2">2</option>
   <optionvalue="3">3</option>
   <optionvalue="4">4</option>
   <optionvalue="5">5</option>
</select>页</td>      </tr>    </table>可以知道翻页都是触发了goPage(),这个函数在http://www.phoenix21.net/engine/sinc/scriptForView.js里,找到gopagefunction goPage(frmObj, page)
{
    var frm = eval("document." + frmObj);
    frm.currentPage.value = page;
    frm.submit();
},
以点击第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表单<form name="frmQuery_c_56_278" style="display:none" method="post" action="gettemplate.jsp?temp_Id=330&a=93">
<input type="hidden" name="totalPage" value="5">
<input type="hidden" name="currentPage" value="1">
<input type="hidden" name="otherSortField" value="">
</form>这样翻页地址就是http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=330&a=93&totalPage=5&currentPage=分页&otherSortField=路第3页是http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=330&a=93&totalPage=5&currentPage=3&otherSortField=

在采内容页网址时遇到了一个问题就是内容页地址是<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/gettemplate.jsp?temp_Id=7&querystring=info.guid={BFA80101-0000-0000-179D-148AFFFFFF8F}&pid=93,没有那2个单引号,好像是软件会过滤掉,自定义网址仍然会被过滤,不知道这是否bug

正确的http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=7&querystring=info.guid='{BFA80101-0000-0000-179D-148AFFFFFF8F}'&pid=93
最后编码了',才行,也可以先导出网址,修改后在导入

zhouchanglin 发表于 2011-1-12 18:48:45

回复 25# alfred007

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

分页地址各式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/itemListAction.do?method=Item_List_Data&pagesize=10&currentPage=5&itemStatus=&slNo=&itemCode=&orderNo=&orgName=&operType=

各个参数的意识:pagesize-----每页数量,可以【200】

currentPage----------页码


slNo------------受理编号


itemCode-------------------项目编号

orderNo----------下达文号

orgName--------承担单位

operType---------------业务类型修改参数可以有不同的结果

zhouchanglin 发表于 2011-1-12 21:06:25

本帖最后由 zhouchanglin 于 2011-1-14 20:01 编辑

回复 24# 023xiebo

在这个页面源码里调用了<div class="cnt-right">
              <iframesrc="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>
            </div>调用地址http://pic.auto.163.com/autopic/mmindexmain.html,查看它的源码
下面就是分页控制的相关函数<script type="text/javascript">
      
         
                        function pageselectCallback(page_index, jq){

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

               
                return false;
            }
         
         
            function initPagination() {
               
                $("#Pagination").pagination(3, {
                  num_edge_entries: 2,
                  num_display_entries: 4,
                  prev_text:'上一页',
                  next_text:'下一页',
                  callback: pageselectCallback,
                  items_per_page:1
                });
             }
                  
            
            $(document).ready(function(){      
                //$('#Searchresult').load('http://pic.auto.163.com/autopic/senddatammindexmain.jsp', null, initPagination);
                initPagination();
            });

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

从0开始,显示页码-1

,在点击初始列表分页http://pic.auto.163.com/autopic/senddatammindexmain.jsp?pageindex=0里德一个内容页时,路http://pic.auto.163.com/autopic/mmshowindex/topicid=28JE0008.html 后,这个页面跳转至http://pic.auto.163.com/autopic/index.html?url=http://pic.auto.163.com/autopic/mmshowindex/topicid=28JE0008.html,而这个跳转后的页面又在<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请求<div class="cbd2" id="Searchresult" >
                  
                                         正在载入数据……
                  </div>

用的下面的函数,和前面的差不多pageselectCallback(page_index, jq){

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

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

http://pic.auto.163.com/autopic/senddatammshowindexmain.jsp?pageindex=0&topicid=4DU30008,
点击吃页面下的内容页,<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,这样就可以了,图片可下载,每个主题一组图片
页: 1 2 [3] 4 5 6 7 8 9 10 11 12
查看完整版本: js post网站专区