找回密码

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

搜索
火车采集器V9版免费下载火车浏览器 - 可视采集,万能群发,全自动脚本工具
查看: 21496|回复: 62

规则教程第一U对一个AJAX页面的分析(申请车厢)

[复制链接]
发表于 2010-10-17 00:49:15 | 显示全部楼层 |阅读模式
本帖最后由 lypying 于 2010-10-18 19:09 编辑

复杂程度:较复杂
难度系数:较高
建议阅读人群:熟练使用火车
所用技术:对JS源码分析,会使用抓包工具。

最近在采集讨论区看见个帖子 如下
http://bbs.locoy.com/spider-54812-1-3.html
采集金融界的这个站 为总结经验加换车厢特发此贴,希望大家共同分析相对复杂的采集经验 那么现在开始 打开页面
http://insurance.jrj.com.cn/acti ... a?insuranceTypeId=4
看源码
发现所要采集的列表居然没有 其实这一步就可以干掉一部分采集的朋友了 不过我发现了这段代码
  1. <script language="javascript">
  2.                                 searchProduct('', '18', obj_paras_123445);
  3.                                 var ck = new HttpCookie("insurance_IPs");
  4.                                 ck.setValue("");
  5.                                 ck.setExpires(-1);
  6.                                 ck.save();
  7.                                 </script>
复制代码
一个搜寻产品的函数searchPriaduct 这个函数是JAVASCRIPT的复制函数名,查找下这个函数的位置,因为JS的函数在源代码里是可以看到的
在这个源码页搜索下居然没有。没关系,保存该网页。

用DW打开网页 查看源代码会发现好多JS文件 如图

简单的看下可以知道他的JS是用PROTOTYPE做的。找到刚才的函数searchPriaduct  复制 在各个JS页面搜索 找到该函数原型
在IPL.js文件里我们找到了函数原型,为了方便分析 我将这个函数重新的拍了下版。如图

这个只是方便阅读 下面贴出这个函数
  1. function searchProduct(pageIndex,pageSize,paras_obj){
  2.         var url="/action/SearchIPJson.jspa";
  3.         var params="pageIndex="+pageIndex+"&pageSize="+pageSize+"&"+Object.toQueryString(paras_obj);
  4.         paras_obj.pageIndex=pageIndex;
  5.         paras_obj.pageSize=pageSize;
  6.         var productName=paras_obj.productName;
  7.         paras_obj.productName=encodeURI(productName);
  8.         new Ajax.Request(url,{method:'post',parameters:paras_obj,onSuccess:
  9.                                          function(request){var ps=request.responseJSON;
  10.                                          makeTable(ps.items,$("ct_IPL"));
  11.                                          paras_obj.productName=productName;
  12.                                          pager(ps.curPage,ps.pageSize,ps.pageCount,paras_obj,$("page"));}});}
复制代码
好了 不难看出定义了变量url和params所用就是获得并处理由我们所看到源码页传递过来的参数。他传递了三个参数分别是pageIndex,pageSize,paras_obj懂点英文的人都知道这三个函数的意义,然后通过new Ajax.Request POST过去 我对JS不是很了解 但是通过字面意思可以知道,最后传递的是一个JSON数据。据我了解(可能是错误的)JSON传递的是一个数据结构,一次将所需要的结构传递过来。提交的页面是/action/SearchIPJson.jspa
以上是对源码的分析下面我们用抓包工具对该页面进行分析 对该页面进行抓包多点几次页面得到的结果如图



对比两次POST出去的值你会发现 和我们上面的代码分析是一样的 确实是向action/SearchIPJson.jspa页面提交的。仔细观察pageIndex是索引的页面,也就是当前页码。desc应该是升序 pageSize是18 一查上面的 居然是18个产品哦。真神奇 当然这个不是巧合了。我们在IE里输入提交的数据
http://insurance.jrj.com.cn/acti ... x=2&pageSize=18
居然可以下载,下载用记事本打开,这些就是我们要采集的数据 好了想要得到的数据都有了 那么怎么采集哪?
本文仅对这样的数据进行分析。由于我用的是个人版,并没有插件功能,可能插件会实现这样的功能,如果你是免费版和像我一样的个人版用户怎么办?没关系我提供个思路,用迅雷下载全部的提交页面,这个数据应该是JASON的结构 每个{},{},{}这样的结构都是所要的数据结构,那好 吧这些文件复制到一个文本文档里。后缀名改为HTML,传到你本机的IIS里。想做什么?当然用火车头0深度去抓了。只要有规律就可以抓。

    那么有人会问我要采集内容页,链接里的数据怎么办?仔细观察内容页网址http://insurance.jrj.com.cn/html/ip/detail/ip_103355.shtml你会发现IP_后面有六位数,好到我们下载的文件里找找
{"bxzr":"","bzqx":"七年,十年两种","companyId":100468,"cpgzd":1003,"cptjd":1000,"id":103355,"insuranceTypeId":4,"productName":"珍珠两全保险分红型","score":0,"shortName":"中法人寿","tbnlsm":"60天--65周岁","typeName":"分红险"}
对应的"id":103355," 居然是ID值。这是巧合么?当然不是。谁能一下子蒙这么准那,这就考平时的观察。这样你可以通过多页采集,采集到内容页里的内容了。虽然麻烦点但是我相信这个思路是可以解决这个问题的。
到此这个页面的分析告一段落,如果有其他朋友有其他更好的办法解决这个采集 请跟帖大家讨论。没功劳有苦劳 希望管理员给几节车厢,赞车厢换版本目标标准版奋斗吧 哈哈 如果得到大家的认可,以后有时间我还会发出一些比较复杂的采集思路。有人会说,抓包就能分析了为什么要看源代码。知己知彼百战不殆啊
感谢大家的阅读,希望此文只是一个序幕而不是一个结束。谢谢

早上起来还在睡意的朦胧中,补充个规则 方便大家研究


规则下载
游客,如果您要查看本帖隐藏内容请回复


留个QQ号码 17547523  希望可以与大家交流技术

本帖子中包含更多资源

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

x

评分

3

查看全部评分

发表于 2010-10-17 08:57:55 | 显示全部楼层
顶起,,好教程,如果做成视频就更好了
发表于 2010-10-18 06:44:28 | 显示全部楼层
ccccccccccccccccccccccc
发表于 2010-10-19 01:39:03 | 显示全部楼层
真牛..   谢谢你的分析
发表于 2010-10-21 11:11:28 | 显示全部楼层
有才!!不错
发表于 2010-10-21 15:33:48 | 显示全部楼层
前来参观,很好。
发表于 2010-10-25 21:31:37 | 显示全部楼层
看看在说看看在说
发表于 2010-10-25 21:37:32 | 显示全部楼层
强顶,踩几下
发表于 2010-10-26 20:30:29 | 显示全部楼层
回复 1# lypying


    真真真
发表于 2010-10-27 13:11:21 | 显示全部楼层
太深奥啊不懂啊学习下
您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

温馨提示:建议您联系官方定制服务,通过官方支付方式完成支付。您与其他非官方账号发生的交易,我方概不承担责任。网络有风险,交易需谨慎

QQ| 手机版|Archiver| 火车采集器官方站

Copyright © 2001-2013 Comsenz Inc.  Template by Comeings! All Rights Reserved.

Powered by Discuz! X3.4( 皖ICP备06000549 )

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