charkali 发表于 2010-11-27 09:20:50

采集ajax页面,结果只能采集第一页,是什么原因

http://www.520job.com/apply/
我想采集这个页面

我用软件获取了它的发送的内容   
ty=0&info=1
ty=0&info=2
ty=0&info=3
ty=0&info=4

当翻页时,只有info这个参数是变化的,和页码相同。我的采集设置如下


点测试网址的时候,采集到的数据永远是第一页的。我想问下我的设置是不是有问题!

哪位能指点一二??

charkali 发表于 2010-11-27 09:44:58

有人知道吗????????

charkali 发表于 2010-11-27 10:45:52

{:4_188:}{:4_186:}{:4_197:}

zhouchanglin 发表于 2010-11-27 12:41:14

好像是你post提交的地址不正确,以下是分析的数据:首先是 <img src="/images/730_01_01.gif" title="上一页" width="71" height="23" style="cursor:pointer" onClick="goPage('inputpage', 'totalpage','up')" /> <img src="/images/730_02.gif" title="下一页" width="71" height="23"style="cursor:pointer" onClick="goPage('inputpage', 'totalpage','next')" /> </td>
            <td width="150">转到
            <input name="gopage1" type="text"style="height:18px; line-height:15px; width:32px; text-align:center; border:1px solid #D9E0EA; margin:0px 3px;" id="gopage1" onKeyUp="value=value.replace(/[^\d]/g,'') " value="1" size="5" maxlength="10" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" />
                          
            <img src="../images/btn_ok3.gif" title="" style="cursor:pointer" onClick="goPage('gopage1','totalpage','nonce')" /> 页</td>这是它的页脚部分的代码,可以得出当点击上一页,下一页和输入页码都触发了goPage()函数,所以这个函数是关键,找出它的源码,一切问题就可以解决了

而原网页代码里找不到这个函数,所以肯定藏在了js文件里,我把整个网页全部保存,再来看它的js文件,

根据js文件的名字,已经可以大概猜出每个文件的用途了,

ajax文件设置了ajax的请求函数MyAJAX("POST", postUrl, params, "text", applyinfoResult);

list文件里包含了1.换档的函数applyswitchCell(n, hash),控制4个档的互换,ty参数代表哪个档,1,2,3,4

2.关键函数fgoPage(inputpage,totalpage,pageto),这是它的源码function goPage(inputpage,totalpage,pageto)
{
        var page = document.getElementById(inputpage).value;
        var totalpage = document.getElementById(totalpage).value;
        if(pageto=='next'){
                page=parseInt(page)+1
        }else if(pageto=='up'){
                page=parseInt(page)-1
        }
        page = filterPage(page, totalpage);
        document.getElementById("inputpage").value = page;
        applylistinfo(page);
}

function applylistinfo(info)
{
        var postUrl="with/list.asp";
        var infoty = document.getElementById("infoty").value;
        var params="ty="+ infoty +"&info="+info;
        MyAJAX("POST", postUrl, params, "text", applyinfoResult);
}

function applyinfoResult(responseText)
{       
    var page = document.getElementById("inputpage").value;
        document.getElementById("apply_list").innerHTML = responseText;
        document.getElementById("pagetxet").innerHTML = page;
        document.getElementById("pagetxet1").innerHTML = page;
}嵌套的函数,goPage('gopage1','totalpage','nonce')" 以输入页码触发为例,可知函数得到了欲请求的页码,info变量接收了页码的值,这样params参数(post数据)---ty=1&info=页;MyAJAX("POST", postUrl, params, "text", applyinfoResult);这个函数可以在ajax文件里找到,建立了ajax请求,请求方式post,post地址postUrl,var postUrl="with/list.asp";,可知地址是http://www.520job.com/apply/with/list.asp,这样问题就解决了

把ty=1&info=分页,作为post数据,post地址http://www.520job.com/apply/with/list.asp,就可以采到了,这个网站我用get方式提交试了下,也可以请求到数据,规则里我是用get方式采集的,路写成这样的http://www.520job.com/apply/with/list.asp?ty=1&info=15

它的数据好像每页也是变的,每页的数据可能会不断变化



charkali 发表于 2010-11-27 15:11:37

http://www.520job.com/apply/with/list.asp
这个地址我也试过,可就是不行

你一提醒倒让我 醍醐灌顶了。谢谢

charkali 发表于 2010-11-27 15:12:48

还有一个问题
采集到的内容页地址是 http://www.520job.com/apply/with/job_show.asp?id=78974

而实际地址是http://www.520job.com/apply/job_show.asp?id=78974

请问这个在采集的时候能替换吗

zjyk1984 发表于 2010-11-27 16:45:17

使用手动填写链接规则方式组合出正确地址就可以了

iwangz 发表于 2010-12-1 00:36:51

我來就是對你最大的支持

justinhotban 发表于 2010-12-2 09:25:46

自动跳转了啊 呵呵
页: [1]
查看完整版本: 采集ajax页面,结果只能采集第一页,是什么原因