zhouchanglin
发表于 2011-3-18 12:26:48
本帖最后由 zhouchanglin 于 2011-3-18 12:30 编辑
回复 90# ghhhua
这个网站属于在一个表单搜索,然后用另一个表单记录用户搜索的条件,这样在翻页的时候就可以通过记录用户搜索的条件知道用户的当前选择,提交这个表单以达到翻页的目的
用户搜索的表单是,源码div class="lefttitle">备案查询</div>
<form id="form2" name="form2" method="post" action="/index.do"> 略去了其中的表单项,具体可以查看这个表单
做翻页主要查看页码部分的代码,看翻页触发的事件就很容易了
这是页脚的代码共 33 页 共 1215 条记录
[<A href="javascript:skip('1');">首 页]</A>
[<A HREF="javascript:skip('0');">上一页</A>]
[<A HREF="javascript:skip('2');">下一页</A>]
[<A HREF="javascript:skip('33');">末 页</A>] <in可知道触发了skip(),在源码找到skip(),function skip(page){
document.indexForm.elements['method'].value= 'entps';//name=indexForm的表单的name=method的表单元素的value= 'entps'
document.indexForm.elements['cpf.cpage'].value= page;//name=indexForm的表单的name=method的表单元素的value= 传的page参数
document.indexForm.submit();//indexForm的表单提交
}name=indexForm的表单:<form name="indexForm" method="post" action="/index.do;jsessionid=8A0013A6F8426A3C1797E27A77B82ABA"> //action后面是post地址,jsessionid需要去掉,只是/index.do
<input type="hidden" name="method" value="entps">//目的,代表哪种请求,entps是备案查询
<input type="hidden" name="type" value="2"> //
<input type="hidden" name="entpname" value=""> //公司名称
<input type="hidden" name="sbname" value=""> //经营资源
<input type="hidden" name="province" value=""> //省份
<input type="hidden" name="bdate" value=""> //起始日期
<input type="hidden" name="edate" value=""> //终止日期
<input type="hidden" name="city" value=""> //城市
<input name="cpf.cpage" type="hidden" value="1" size="2" maxlength="4"> //当前页
<input name="cpf.pagesize" type="hidden" value="37" size="2" maxlength="4">//每页数量
</form> 这个表单会在备案查询搜索表单提交后,设置相应的数据,即是相互对应的,具体可以查看那个用户搜索的表单,而这个表单的作用是记录用户的搜索条件,翻页时提交尺表单
这样翻页地址,我用post的方式组合提交参数,http://txjy.syggs.mofcom.gov.cn/index.do?method=entps&type=2&entpname=&sbname=&province=&bdate=&edate=&city=&cpf.cpage=分页&cpf.pagesize=37路第2页就是http://txjy.syggs.mofcom.gov.cn/index.do?method=entps&type=2&entpname=&sbname=&province=&bdate=&edate=&city=&cpf.cpage=2&cpf.pagesize=37
第3页
http://txjy.syggs.mofcom.gov.cn/index.do?method=entps&type=2&entpname=&sbname=&province=&bdate=&edate=&city=&cpf.cpage=3&cpf.pagesize=37
所以当搜索后,只要查看indexForm表单即可
修改下规则里我加了37页,最多33页,一开始我把cpf.pagesize=37当成总页数了
zhouchanglin
发表于 2011-3-18 13:35:43
回复 88# lanxianghui
所有的数据都在一个页面了,这个网站的提交很复杂,我看不明白,可能全是从页面window.HotelQuery = {}提取的,这样反而很容易采了,直接添加http://hotels.ctrip.com/hotel/chongqing4/一页,然后把allHotels:'19098,23188,73657,51646,26975,22482,81563,80704,20905,73271,63617,63143,21232,56266,75487,25286,66140,83458,5929,24876,45360,46205,25460,84382,20377,65438,5931,48386,5934,17599,45046,51484,52718,54528,75005,62979,12065,62804,46641,57525,11082,75621,82854,79781,80690,46400,85870,21104,63321,19470,16043,20244,12399,26805,84436,80542,80909,78939,67118,54093,83946,66487,85957,78001,84500,66999,46630,77999,8085,64051,48774,80969,82256,82452,79839,46500,52730,77161,64120,82611,70793,72271,13013,21351,72914,21499,73680,79699,79864,75035,54367,85512,52504,62994,47566,67929,85126,62957,83977,82207,80570,79937,72798,85129,65447,56239,84023,84333,77666,79728,83706,85249,80966,83899,78509,73363,82802,82189,79056,25330,85124,84191,76440,86276,73012,80862,78500,86533,79859,80058,84446,79061,50454,80895,82815,85960,63274,81246,82514,73505,84829,65178,74031,86545,82057,84425,79353,80152,80861,81395,77616,82311,82923,71585,81979,52071,82470,26037,65200,65172,48343,47428,82816,48342,62952,14888,55533,79654,81572,66494,65998,20617,22777,73727,47715,21618,75846,6190,66712,25611,20962,47392,76020,56379,72710,67032,57668,79692,48056,56926,80200,19985,67626,63521,81369,65999,64705,76399,77682,72680,45081,19239,78084,46231,64457,72809,78965,81170,13967,22218,74580,77916,52027,56918,81864,81868,75580,73237,63296,82909,64873,50958,48424,82925,81849,83710,80573,80692,78414,80153,66129,68184,81266,81851,83617,55262,83703,81629,77571,83360,67895,82698,84281,80134,83567,75974,85128,79749,74028,81167,62854,47189,44931,85240,74670,47647,79705,80863,63343,57643,57421,79638,81110,82300,77730,52550,84830,75636,67045,75063,76040,70975,46941,83694,83895,82356,84340,62954,81399,46115,46053,56916,57244,48375,66045,64546,82015,56178,52812,45090,62117,57192,48918,67937,45113,65265,26004,17273,20769,56242,76060,24887,62860,74605,85701,77016,46912,52712,80965,84786,64712,75732,47273,85513,84339,80574,78738,65170,84226,79757,84783,77948,47046,85419,85589,43965', 用自定义网址循环出来,最前最后2个hotel id,匹配不出,直接添加,这样所有的就采到了,你可以查看最前的是19098,最后页的最后一条id正好是43965
lee1986320
发表于 2011-3-18 13:38:41
http://zp.tc.cn/zwlist.aspx
太仓人才网
我写的POST对嘛?
_EVENTTARGET=Ddl_PageNumber&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE=随机&__EVENTVALIDATION=随机&Ddl_PageNumber=分页
为什么我猜不到数据??
zhouchanglin
发表于 2011-3-18 13:56:38
回复 93# lee1986320
你的post对,踩不到可能是随机值设置,还有post一般要自定义网址形式,自动识别火车头仿佛有bug
lee1986320
发表于 2011-3-18 14:07:44
回复 94# zhouchanglin
谢谢了,真的很感谢你
lee1986320
发表于 2011-3-18 14:28:17
http://www.kshr.com.cn/ksasp/person/listissu.ASP?newissue=1昆山人才网
POST数据为
js=20&condition=+WHERE+ISSUE_DATE+%3E+DATEADD%28+DAY+%2C++-+7+%2C+GETDATE%28%29+%29&empid=o&job_name=&idall=o510581o510583o510577o510586o510574o510579o510576o510572o510590o510588o510584o510592o516391o516387o516384o516377o516445o516433o516400o516380o&ScrollAction=%CF%C2%D2%BB%D2%B3&ScrollTo2=2&showtype=&PageNo2=
这个有随机值和分页吗?
zhouchanglin
发表于 2011-3-18 20:01:54
本帖最后由 zhouchanglin 于 2011-3-18 20:10 编辑
回复 http://bbs.locoy.com/redirect.php?goto=findpost&pid=389856&ptid=56816]96# lee1986320
l列表分页为下面的格式:http://www.kshr.com.cn/ksasp/person/listissu.ASP?newissue=1&js=20&condition=WHERE ISSUE_DATE > DATEADD( DAY ,- 7 , GETDATE() )&job_name=&PageNo2=页码&switch=转到指定页第2页就是http://www.kshr.com.cn/ksasp/person/listissu.ASP?newissue=1&js=20&condition=WHERE ISSUE_DATE > DATEADD( DAY ,- 7 , GETDATE() )&job_name=&PageNo2=2&switch=转到指定页
这个地址在浏览器打开会编码,需要使用地址栏的,地址有中文火车头出错,地址加不了
从源码中到第<INPUT TYPE=TEXT NAME=PageNo2 SIZE=4>页<INPUT TYPE=SUBMIT NAME=switch VALUE=" 转到指定页" >即考虑用输入页码点转到自定页翻页方式,提交表单<FORM METHOD=POST ACTION=/ksasp/person/listissu.ASP?newissue=1 NAME="infoform"> 这样地址可以把表单拥有name的把各个&连接,连载post地址http://www.kshr.com.cn/ksasp/person/listissu.ASP?newissue=1后面
这样翻页地址就是http://www.kshr.com.cn/ksasp/person/listissu.ASP?newissue=1&js=20&condition=WHERE ISSUE_DATE > DATEADD( DAY ,- 7 , GETDATE() )&empid=o&job_name=&ScrollTo2=&PageNo2=分页&switch=转到指定页而switch=转到指定页是这种方式翻页的标示,不可缺少
js=20--------------------每页数量
condition=WHERE ISSUE_DATE > DATEADD( DAY ,- 7 , GETDATE() )数据库条件表达式
empid=o------------------数据id分割符
ScrollTo2-----------------------下一页翻页的代表页码,无效
PageNo2=分页-----------------------------输入页码点转到自定页翻页方式的页码
这个网站 数据顺序是随机的
ghhhua
发表于 2011-3-19 15:56:40
回复 91# zhouchanglin
感谢大侠的帮助,问题已经得到圆满的解决,叩谢了
104603803
发表于 2011-3-20 09:49:17
oh my god天下居然有楼主如此好人,,,我学了大半个月都不知道啊。。http://bbs.szhome.com/index.aspx?boardid=80 请指教!
zhouchanglin
发表于 2011-3-20 11:36:07
回复 99# 104603803
这个http://bbs.szhome.com/index.aspx?boardid=80 网址在框架里调用了列表网址<frame name="mainFrame" src='fetchdata.aspx?boardid=80' scrolling="auto"> 这样列表地址是http://bbs.szhome.com/fetchdata.aspx?boardid=80,这个是常见的post分页
下面页码部分,第2页的<a href="javascript:__doPostBack('AspNetPager2','2')" style="margin-right:5px;"></a>可以知道点击触发:__doPostBack('AspNetPager2','2')
__doPostBack:var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;//AspNetPager2,这个是请求的目的标识
theForm.__EVENTARGUMENT.value = eventArgument;//点第2页就是2,这个就是代表分页
theForm.submit();//form1表单提交
}
}form1表单:<form name="form1" method="post" action="fetchdata.aspx?boardid=80" id="form1"> 连接表单具有name的表单项,就得到了post数据:__EVENTTARGET=AspNetPager2&__EVENTARGUMENT=[分页]&__LASTFOCUS=&__VIEWSTATE=&dropOrderBy=0这个网站和最常见的post分页有些不同,有许多js 这个东西Sys.Application.add_init和 __LASTFOCUS有关,一般对最后的提交没有影响