zzh1984
发表于 2011-2-20 16:15:16
http://news.chemnet.com/
按标题搜索后的内容如何采集呀
gapo83
发表于 2011-2-20 16:33:38
本帖最后由 gapo83 于 2011-2-20 16:47 编辑
http://searchjob.chinahr.com/ 按关键字查询后,分页数据如何采集?抓包没有找到规律,谢谢!
补充:页面内容里有些数据是从其他网页里提取的,这样的怎么采集?
zhouchanglin
发表于 2011-2-21 13:08:40
回复 51# zzh1984
你随便搜个词,点第2页就出来列表地址了http://news.chemnet.com/bin/tag.cgi?p=3&t=&f=search&c=&c3=行业动态&c4=&c6=&c66=&terms=&begin_date=2011-02-11&end_date=2011-02-21
参数意识:p----当前页,修改这个就行了
c3--------------分类
begin_date-----------开始时间
end_date--------结束时间
源码里有内容页连接地址,不是post的,普通的分页方式,不知道你哪里有问题
zhouchanglin
发表于 2011-2-21 14:53:48
本帖最后由 zhouchanglin 于 2011-2-21 14:57 编辑
回复 52# gapo83
我分析不出怎样提交的,不过抓包是可以找到规律的,只要把参数urlKey的值用base64解码,就可以看出规律了,这个参数是核心,而且post地址看明白后就变的简单了
我搜索的是职位关键字是:计算机
我抓包获得第2页的post数据
post地址:POST /GetSearchResult.awp?jtq=onlyrecord&urlKey=aXNJbnRlclZpZXclM0QxJTI2SXNNb2RlbCUzRGZhbHNlJTI2ZnJvbSUzRHNlYXJjaCUyNnByaiUzRHF1aWNrJTI2cG9zaXRpb25OYW1lJTNEJTI1dThiYTElMjV1N2I5NyUyNXU2NzNhJTI2c2olM0QxJTI2Y3VyUGFnZSUzRDIlMjZwYWdlU2l6ZSUzRDIwJTI2cmVjb3JkQ291bnQlM0Q2MjEyOSUyNm9yZGVyRmllbGQlM0RyZWxhdGlvbiUyNm9yZGVyJTNEREVTQw==&ProjectID=3&IsModel=false&jtr=49825721&jtrr= post参数:jtUrl=document.location.href&hidRnd=tmpJtRefRnd第3页的post数据:
post地址:POST /GetSearchResult.awp?jtq=onlyrecord&urlKey=aXNJbnRlclZpZXclM0QxJTI2SXNNb2RlbCUzRGZhbHNlJTI2ZnJvbSUzRHNlYXJjaCUyNnByaiUzRHF1aWNrJTI2cG9zaXRpb25OYW1lJTNEJTI1dThiYTElMjV1N2I5NyUyNXU2NzNhJTI2c2olM0QxJTI2Y3VyUGFnZSUzRDMlMjZwYWdlU2l6ZSUzRDIwJTI2cmVjb3JkQ291bnQlM0QyMDAwJTI2b3JkZXJGaWVsZCUzRHJlbGF0aW9uJTI2b3JkZXIlM0RERVND&ProjectID=3&IsModel=false&jtr=59428173&jtrr=post参数:jtUrl=document.location.href&hidRnd=tmpJtRefRnd上面2个地址和参数现在看不到代表分页的参数,其他的参数的意义也很难知道,其实它把最重要的部分urlKey参数用base64编码加密了,所以只要找个在线base64解码的网站http://tools.jb51.net/tools/base64_decode-utf8.php,把urlKey参数部分的支付解码,就可以还原成最重要的查询信息的代码
下面是第2页base64解码后的urlKey=isInterView%3D1%26IsModel%3Dfalse%26from%3Dsearch%26prj%3Dquick%26positionName%3D%25u8ba1%25u7b97%25u673a%26sj%3D1%26curPage%3D2%26pageSize%3D20%26recordCount%3D62129%26orderField%3Drelation%26order%3DDESC这个后面的支付依然有编码,还看的不直观,是UrlDecode编码的,在线UrlDecode解码的网站http://tool.chinaz.com/Tools/URLEncode.aspx,
UrlDecode解码后是isInterView=1&IsModel=false&from=search&prj=quick&positionName=%u8ba1%u7b97%u673a&sj=1&curPage=2&pageSize=20&recordCount=62129&orderField=relation&order=DESC这些代码看上去就十分清楚了,只是positionName参数后面的有编码,这也有在线解码的,解码后是计算机,我搜索的职位关键字就是计算机,代表搜索职位
同样第3页的post地址解码后是urlKey=isInterView=1&IsModel=false&from=search&prj=quick&positionName=%u8ba1%u7b97%u673a&sj=1&curPage=3&pageSize=20&recordCount=2000&orderField=relation&order=DESC从2,3页的urlKey参数可以知道这里的curPage参数代表分页,其他的都没有变化,这样每次添加地址时可以只修改urlKey部分中的curPage,把isInterView=1&IsModel=false&from=search&prj=quick&positionName=%u8ba1%u7b97%u673a&sj=1&curPage=代表分页&pageSize=20&recordCount=2000&orderField=relation&order=DESC到http://tools.jb51.net/tools/base64_decode-utf8.php编码,然后把处理后的字符串组合成正确的post地址
这样第4页post地址,urlKey参数:isInterView=1&IsModel=false&from=search&prj=quick&positionName=%u8ba1%u7b97%u673a&sj=1&curPage=4&pageSize=20&recordCount=2000&orderField=relation&order=DESC,
base64编码后:aXNJbnRlclZpZXc9MSZJc01vZGVsPWZhbHNlJmZyb209c2VhcmNoJnByaj1xdWljayZwb3NpdGlvbk5hbWU96K6h566X5py6JnNqPTEmY3VyUGFnZT00JnBhZ2VTaXplPTIwJnJlY29yZENvdW50PTIwMDAmb3JkZXJGaWVsZD1yZWxhdGlvbiZvcmRlcj1ERVND
这样第4页post地址会是http://searchjob.chinahr.com/GetSearchResult.awp?jtq=onlyrecord&urlKey=aXNJbnRlclZpZXc9MSZJc01vZGVsPWZhbHNlJmZyb209c2VhcmNoJnByaj1xdWljayZwb3NpdGlvbk5hbWU9JXU4YmExJXU3Yjk3JXU2NzNhJnNqPTEmY3VyUGFnZT00JnBhZ2VTaXplPTIwJnJlY29yZENvdW50PTIwMDAmb3JkZXJGaWVsZD1yZWxhdGlvbiZvcmRlcj1ERVND
ps:后面的&ProjectID=3&IsModel=false&jtr=49825721&jtrr=参数不要也无影响,这里我没有加
第5页是isInterView=1&IsModel=false&from=search&prj=quick&positionName=%u8ba1%u7b97%u673a&sj=1&curPage=5&pageSize=20&recordCount=2000&orderField=relation&order=DESC
base64编码:aXNJbnRlclZpZXc9MSZJc01vZGVsPWZhbHNlJmZyb209c2VhcmNoJnByaj1xdWljayZwb3NpdGlvbk5hbWU9JXU4YmExJXU3Yjk3JXU2NzNhJnNqPTEmY3VyUGFnZT01JnBhZ2VTaXplPTIwJnJlY29yZENvdW50PTIwMDAmb3JkZXJGaWVsZD1yZWxhdGlvbiZvcmRlcj1ERVND
这样第5页post地址会是http://searchjob.chinahr.com/GetSearchResult.awp?jtq=onlyrecord&urlKey=aXNJbnRlclZpZXc9MSZJc01vZGVsPWZhbHNlJmZyb209c2VhcmNoJnByaj1xdWljayZwb3NpdGlvbk5hbWU9JXU4YmExJXU3Yjk3JXU2NzNhJnNqPTEmY3VyUGFnZT01JnBhZ2VTaXplPTIwJnJlY29yZENvdW50PTIwMDAmb3JkZXJGaWVsZD1yZWxhdGlvbiZvcmRlcj1ERVND
经测试数据相符,麻烦的是要一页页的编码,添加地址
being
发表于 2011-2-21 17:35:52
回复 47# zhouchanglin
谢谢。我来学习下
scaur
发表于 2011-2-21 17:41:19
请问这个怎么弄?谢谢。http://www.coach200.com/cates/266.html
zhouchanglin
发表于 2011-2-21 21:11:19
本帖最后由 zhouchanglin 于 2011-2-22 12:15 编辑
回复 56# scaur
把网页全部保存在product_all.js文件里是分页函数,找到$("#Pagination").pagination(recordcount, {callback: pageselectCallback, current_page:0, items_per_page:20});
});
paginatio.js 文件有jQuery.fn.pagination = function(maxentries, opts){},maxentries总数量,opts选项
都是通过这个函数控制的,
回调函数callback: pageselectCallbackfunction pageselectCallback(page_index,jq){
if(!initLoad){
//保存当前浏览页
$("#__page_current_index").val(page_index);
LoadData(page_index);--------------------加载第几页数据
}else{
initLoad = false;------------------是否第一次加载
}
}
page_index------页码索引
function LoadData(page_index, reload){
page_index = parseInt(page_index) + 1;
$.ajax({
url:"/product_by_cate_all_ajax.php",----------------Ajax请求地址
type:"post",
data:{pageindex:page_index, pagesize:20, cateid:$("#__cate_id").val()},--------------------参数数据 pagesize每页数量
cateid物品分类id
success:function(data){
$("#tbl_list").html(data);
initEvent();
}
});
}
这个网站必须用post方式请求才可以,get连接参数提交的地址不行
post地址:http://www.coach200.com/product_by_cate_all_ajax.php
post数据:pageindex=分页&pagesize=20&cateid=266
scaur
发表于 2011-2-22 09:02:27
哥,太感谢你了。慢慢看下内容消化下,每个页面都下载收藏。
scaur
发表于 2011-2-22 09:45:17
我这边打开http://www.coach200.com/product_by_cate_all_ajax.php?pageindex=8&pagesize=20&cateid=266页面里面采集到的都是同一网址?
zhouchanglin
发表于 2011-2-22 11:35:20
回复 59# scaur
我 没有做对,看来还有其他地址,这个网站jq的比较复杂
页:
1
2
3
4
5
[6]
7
8
9
10
11
12
13
14
15