wangrutie 发表于 2011-2-26 00:32:34

http://www.csrcsc.com/personal/personalList.aspx

这个网站怎么采集分页呀,请楼主帮忙,万分感谢!

gian 发表于 2011-2-28 01:07:58

采集不到详细描述里面的图片地址,希望有热心人能帮助一下~万分感谢
http://www.kaimei-nan.com/products.aspx?id=DY04357

zhouchanglin 发表于 2011-2-28 13:29:21

本帖最后由 zhouchanglin 于 2011-2-28 13:34 编辑

回复 71# wangrutie

这个网站是比较普遍的post分页网站,使用__doPostBack(eventTarget, eventArgument)控制分页请求

只要了解它的翻页触发方式,就很容易解决这个问题,这个网站应该可以使用3种方式翻页,1.直接输入页码,点翻页按钮2.点击下一页,这个不太方便3.直接点击页码
所以只要考虑它们触发的事件,就可以得到post数据,找到相应部分的源码



1.直接输入页码,点翻页按钮部分跳转到:<input name="SQLPager1$TextboxGoToPage" type="text" maxlength="5" id="SQLPager1_TextboxGoToPage" style="width:50px;" />&nbsp;<input type="submit" name="SQLPager1$btnGoToPage" value="确定" id="SQLPager1_btnGoToPage" class="button" onmouseover="this.className='buttonover'" onmouseout="this.className='button'" />可知只是提交了表单,这样SQLPager1$TextboxGoToPage就是最重要的post参数,代表分页,而提交按钮参数SQLPager1$btnGoToPage也是,表明是按了翻页按钮的方式提交的数据

由于数据可能要编码,我试过自己组合的不行,所以我用抓包工具获取了post数据__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE=&__SCROLLPOSITIONX=0&__SCROLLPOSITIONY=0&__EVENTVALIDATION=&dlstFilter=%D0%D5%C3%FB&txtFind=%CA%E4%C8%EB%B9%D8%BC%FC%D7%D6&SQLPager1%24DropDownListItemsPerPage=30&SQLPager1%24TextboxGoToPage=[分页]&SQLPager1%24btnGoToPage=%C8%B7%B6%A8&SQLPager1%24DropDownListPagesPerPageGroup=5里面参数的意识:__EVENTTARGET------------判断是哪种请求,这个网站可以判断每页显示数量的改变,每组显示页码数量

_SCROLLPOSITIONX=0-------判断滚动条位置x,没有用处好像
__SCROLLPOSITIONY=0--------判断滚动条位置y


dlstFilter------查找指标

txtFind-----------------------关键字,这个数据里德%CA%E4%C8%EB%B9%D8%BC%FC%D7%D6应该是请搜索关键字

SQLPager1%24DropDownListItemsPerPage=30----------------------每页显示数量30
SQLPager1%24TextboxGoToPage=[分页]------------------------输入的页码,代表分页

SQLPager1%24btnGoToPage=%C8%B7%B6%A8---------------------按钮提交,%C8%B7%B6%A8是确定

SQLPager1%24DropDownListPagesPerPageGroup=5--------------每组显示5个页码

这些参数修改下数值就会是不同的效果了,路修改SQLPager1%24DropDownListItemsPerPage=10,那么每页显示10条记录


.直接点击页码部分源码:修改下,这种方式行不通,每页显示5个页码,按钮name是1-5循环的,而value是递增的,所以这种方式不适合这个网站

第5页<input type="submit" name="SQLPager1$QuickGoTo5" value="5" id="SQLPager1_QuickGoTo5" title="跳至5页"第4页<input type="submit" name="SQLPager1$QuickGoTo4" value="4" id="SQLPager1_QuickGoTo4" title="跳至4页"可以知道页码点击是个提交按钮,而name是有规律的,包含分页信息,所以可以用SQLPager1$QuickGoTo[分页]=[分页]提交表单,只要把输入页码方式的的post数据做些修改就能得到页码点击的post数据:去掉SQLPager1%24btnGoToPage按钮,也可以去掉页码输入框SQLPager1%24TextboxGoToPage__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE=&__SCROLLPOSITIONX=0&__SCROLLPOSITIONY=0&__EVENTVALIDATION=&dlstFilter=%D0%D5%C3%FB&txtFind=%CA%E4%C8%EB%B9%D8%BC%FC%D7%D6&SQLPager1%24DropDownListItemsPerPage=30&SQLPager1%24QuickGoTo[分页]=[分页]&SQLPager1%24DropDownListPagesPerPageGroup=5我测试的规则使用的时第1种post数据,获取列表分页,内容页标签没有设置

zhouchanglin 发表于 2011-2-28 14:23:08

回复 72# gian

查看源码,这个网站的内容页首先调用了个框架<iframe id="frame_content" src="picFrm.aspx?id=DY04357" width="767" marginheight="0"
                                    align="middle" scrolling="no" frameborder="0"></iframe>,打开这个地址http://www.kaimei-nan.com/picFrm.aspx?id=DY04357,这个地址里装有商品详情的处理函数ajax请求,并不是可以直接看到图片内容的页面,查看这个页面的源码<body onload="edit_Rs('DY04357')" >当文档加载后edit_Rs('DY04357'),这个就是商品详情的处理函数ajax请求,传的参数是商品id

下面是edit_Rs源码var url = "picFrmAjax.aspx?type=";
                        //查看记录edit_Rs('DY04357')
                        function edit_Rs(id)
                        {
                               
                                var pars = "id=" + id +"&aa="+ (new Date().getTime().toString(36));//ajax请求的参数
                                new Ajax.Request(url+"2",//url =picFrmAjax.aspx?type=2
                                {
                                                method: "get",//post method请求方式get
                                                parameters:pars,
                                                onSuccess : function(response)   //callback function成功后的处理函数
                                                {
                                                        $("divJJ").innerHTML = response.responseText;        //返回的数据装在divJJ层理
                                                        //alert($("iinfo").value );//oncontextmenu="return false" ondragstart="return false" onselectstart="return false"
                                                }
                                        }
                                );
                        }<body onload="edit_Rs('DY04357')" >
                <div id="divJJ" align="center" class=font></div>//divJJ层
        </body>通过上面函数可以知道ajax请求地址是http://www.kaimei-nan.com/picFrmAjax.aspx?type=2&id=DY04357&aa=

type=2--------类型
id=DY04357------------商品id,关键的
aa=------------时间字符串,没什么用

这样由内容页到这个地址是2次,属于多页的多页,不过因为商品id可以在内容页的框架里获得,所以可以直接组合成ajax请求地址,这样只要添加多页即可采集到了

只是这个ajax请求地址里德源代码,开始 结束位置不好确定,是不是全是图片,一样格式的呢,这个站商品详情时用图片做的?

gaozhonghua1211 发表于 2011-2-28 16:39:14

http://1x2.bet007.com/oddslist/404905.htm
想采集欧洲赔率,源文件全是js代码,怎么采集啊,好心人帮下,万分感激

zhouchanglin 发表于 2011-2-28 20:32:52

本帖最后由 zhouchanglin 于 2011-2-28 20:37 编辑

回复 75# gaozhonghua1211

,这个网站全部是js组合的头部 主体 页尾HTML

导出到excel http://1x2.bet007.com/Export2Excel.aspx?id=404905,直接采这个就行

好像搞错了,这是列表页?

wangrutie 发表于 2011-3-1 08:21:01

回复 73# zhouchanglin


    谢谢,非常感谢!!!!

gaozhonghua1211 发表于 2011-3-1 15:24:37

回复 76# zhouchanglin

好像有点意思,不过Export2Excel.aspx?列出的只是部分数据,怎能列出所有数据?

zhenhugo 发表于 2011-3-8 23:11:24

http://www.9swing.com/ 这个网站要如何采集全文。。因为要注册用户且登录后里的内容是js调用的

vmans_liu 发表于 2011-3-9 10:09:18

本帖最后由 vmans_liu 于 2011-3-9 10:34 编辑

http://www.ecosopp.com/ecosway/cn/ProductList_cn.jsp?categoryRefNo=300005&pageNo=1
用cn695400登录 http://www.ecosopp.com/ecosway/cn/ShopLoginLink_cn.jsp
,谢谢楼主先
页: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17
查看完整版本: js post网站专区