zhouchanglin
发表于 2010-12-23 15:38:15
本帖最后由 zhouchanglin 于 2010-12-23 15:40 编辑
不对,是你这个和 技嘉金牌主板.ljob 的那个网站基本一样,只是内容页有个跳转,只要用之定义网址,这个问题也很容易解决了
你可以参考 技嘉金牌主板 的采集方法,这2个网站一样的
tiandao
发表于 2010-12-29 16:39:43
麻烦楼主一下
http://www.efu.com.cn/corp/list.aspx?ProvinceId=110000
这个网址~~~我弄的始终都是采集第一页。。看了你前两个差不多一样 按照那个来 还是不行~!
tiandao
发表于 2010-12-29 17:27:24
楼主 不用麻烦你了 刚才仔细看了 你前几个的案例,又仔细的分析了下 终于弄好了。
EVENTTARGET 就是因为这个导致我无法采集第二页直接给他一个值AspNetPager1 就可以了。。
023xiebo
发表于 2011-1-10 21:20:07
我是新手,可否麻烦楼主帮忙写个这个图集http://pic.auto.163.com/autopic/mmindex.html的采集规则?谢谢先
alfred007
发表于 2011-1-12 14:53:14
请楼主帮忙,先谢了。
1,http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=328&p=93
采集具体通知内容
2,http://gonggao.gdstc.gov.cn/itemListAction.do?method=Item_List_Data
采每个分页内容。
mislt
发表于 2011-1-12 15:31:21
能帮忙住模块吗。。。。。。。。。。。
mislt
发表于 2011-1-12 15:36:54
本帖最后由 mislt 于 2011-1-12 15:39 编辑
http://beauty.rayli.com.cn/region/C0003014.html
帮下忙,谢谢,可以把列表中的图片去掉吗?或者一个有图片一个没图片的,做两个
zhouchanglin
发表于 2011-1-12 17:16:50
本帖最后由 zhouchanglin 于 2011-1-13 10:45 编辑
回复 25# alfred007
第一个做好了
刚开始看上去这个网站只是普通post而已,post的处理函数也比较简单,但右键直接查看源码看到的是真实的源码,但这个源码却是在框架里调用了的地址的,
用浏览器工具栏查看源码得到主体的源码,这里面在一个框架里调用了用户点击的网址,实现了地址栏无变化,蒙骗了我们的眼睛,实际上鼠标悬停在目标连接,笔录状态栏已经显示了它真正的地址,只是点击时被主页面调用了
在这个页面http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=328&p=80&t=81查看源码,不要用右键,否则看到的是调用的网址源码,在源码里会看到<IFRAME
name=main frameBorder=0 width="100%" height="100%" scrolling="no"></IFRAME>这个就是那个框架,是网页右边列表区域
下面比路点击 通知公告时,看它的触发的函数<a href="../engine/gettemplate.jsp?temp_Id=330&a=93" id="m_93" onclick="return showMenu('93', this)">通知公告</a>可以知道触发了showMenu('93', this)function showMenu(id, obj)
{
var _o = document.getElementById("t_" + id);//---------id为t_93的层,包含通知公告的子栏目
var _img = document.getElementById("img_" + id);---------img_93,通知公告的状态图片
document.getElementById("mainTitle").style.display = "";
document.getElementById("searchTitle").style.display = "none"
if(_o == null) return;
if(_o.style.display != "none")-----------路过t_93显示
{
_o.style.display = "none";----------隐藏
_img.src = "../kxptweb/images/zw_a05.gif";
_img.width = 5;
_img.height = 9;
if(obj != null)-----------对象存在
{
var _s = new String(obj.href);----------通知公告的连接地址字符串
document.getElementById("itemTitle").innerText = obj.innerText;
changeNavigatHtml(obj.innerText);
if(_s.substring(_s.length-7) != "engine/")
{
frames("main").location = obj.href;----------------------这个是最重要的,在前面那个框架里调用通知公告的连接地址
mainUrl= obj.href;
//alert(_s.indexOf("&a="));
if(_s.indexOf("banshishixiang.jsp") != -1) document.getElementById("mainTitle").style.display = "none";
if(_s.indexOf("&a=") != -1) document.getElementById("searchTitle").style.display = "";----------显示搜索条
}
else
{
frames("main").location = "about:blank";
}
var ls = _o.all.tags("A");
if(ls.length > 0) s(ls);
}
}后面else的略去了。。。。。。。。。。这样知道了是调用,在源码里查看对应栏目的地址,就可以了,路通知公告地址直接用http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=330&a=93就可以了
当然还要看这个地址里的源码,这里有翻页,下面是这个地址的页脚部分<table width="100%" height="20" border="0" cellpadding="1" cellspacing="1">
<tr class="rs2">
<td height="20" valign="bottom">
第 1 页 / 共 5 页
</td>
<td width="52" valign="bottom">首 页</td><td width="52" valign="bottom">上一页</td><td width="52" valign="bottom"><a href="javascript:goPage('frmQuery_c_56_278',2);">下一页</a></td><td width="52" valign="bottom"><a href="javascript:goPage('frmQuery_c_56_278',5);">末 页</a></td><td valign="bottom">至<select onchange="javascript:goPage('frmQuery_c_56_278',this.options.value);"> <optionvalue="1" selected>1</option>
<optionvalue="2">2</option>
<optionvalue="3">3</option>
<optionvalue="4">4</option>
<optionvalue="5">5</option>
</select>页</td> </tr> </table>可以知道翻页都是触发了goPage(),这个函数在http://www.phoenix21.net/engine/sinc/scriptForView.js里,找到gopagefunction goPage(frmObj, page)
{
var frm = eval("document." + frmObj);
frm.currentPage.value = page;
frm.submit();
},
以点击第5页,goPage('frmQuery_c_56_278',5)为例,根据翻页函数可以知到frmQuery_c_56_27是表单的名字,第2个参数是第几页,把这个表单currentPage就是页码,然后提交frmQuery_c_56_27表单,可以用get请求分页,一定要post的好像参数是asp的那些eventtarget等,
frmQuery_c_56_27表单<form name="frmQuery_c_56_278" style="display:none" method="post" action="gettemplate.jsp?temp_Id=330&a=93">
<input type="hidden" name="totalPage" value="5">
<input type="hidden" name="currentPage" value="1">
<input type="hidden" name="otherSortField" value="">
</form>这样翻页地址就是http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=330&a=93&totalPage=5¤tPage=分页&otherSortField=路第3页是http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=330&a=93&totalPage=5¤tPage=3&otherSortField=
在采内容页网址时遇到了一个问题就是内容页地址是<a href="../engine/gettemplate.jsp?temp_Id=7&querystring=info.guid='{BFA80101-0000-0000-179D-148AFFFFFF8F}'&pid=93" target="_blank">宝安区2010年第二批科技计划项目拟立项公示</a>自动识别出错,它识别成http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=7&querystring=info.guid={BFA80101-0000-0000-179D-148AFFFFFF8F}&pid=93,没有那2个单引号,好像是软件会过滤掉,自定义网址仍然会被过滤,不知道这是否bug
正确的http://www.phoenix21.net/engine/gettemplate.jsp?temp_Id=7&querystring=info.guid='{BFA80101-0000-0000-179D-148AFFFFFF8F}'&pid=93
最后编码了',才行,也可以先导出网址,修改后在导入
zhouchanglin
发表于 2011-1-12 18:48:45
回复 25# alfred007
第2个,分页即使内容页,分页可以用get访问,用循环采集数据
分页地址各式http://gonggao.gdstc.gov.cn/itemListAction.do?method=Item_List_Data&pagesize=10¤tPage=分页&itemStatus=&slNo=&itemCode=&orderNo=&orgName=&operType=路第5页http://gonggao.gdstc.gov.cn/itemListAction.do?method=Item_List_Data&pagesize=10¤tPage=5&itemStatus=&slNo=&itemCode=&orderNo=&orgName=&operType=
各个参数的意识:pagesize-----每页数量,可以【200】
currentPage----------页码
slNo------------受理编号
itemCode-------------------项目编号
orderNo----------下达文号
orgName--------承担单位
operType---------------业务类型修改参数可以有不同的结果
zhouchanglin
发表于 2011-1-12 21:06:25
本帖最后由 zhouchanglin 于 2011-1-14 20:01 编辑
回复 24# 023xiebo
在这个页面源码里调用了<div class="cnt-right">
<iframesrc="mmindexmain.html" name="NT_PHVIEW" style="width: 735px;" onload="this.height=NT_PHVIEW.document.body.scrollHeight" scrolling="no"frameborder="0" marginwidth="0" border="0" id="NT_PHVIEW"></iframe>
</div>调用地址http://pic.auto.163.com/autopic/mmindexmain.html,查看它的源码
下面就是分页控制的相关函数<script type="text/javascript">
function pageselectCallback(page_index, jq){
$.ajax({ //一个Ajax过程
type: "post", //以post方式与后台沟通
url : "http://pic.auto.163.com/autopic/senddatammindexmain.jsp", //与此php页面沟通
dataType:'script',//从jsp返回的值以 script方式 解释
data: 'pageindex='+page_index, //
success: function(script){//如果调用php成功
$('#Searchresult').empty().append(script);
}
});
return false;
}
function initPagination() {
$("#Pagination").pagination(3, {
num_edge_entries: 2,
num_display_entries: 4,
prev_text:'上一页',
next_text:'下一页',
callback: pageselectCallback,
items_per_page:1
});
}
$(document).ready(function(){
//$('#Searchresult').load('http://pic.auto.163.com/autopic/senddatammindexmain.jsp', null, initPagination);
initPagination();
});
</script> 有自己框架的网站不好分析,看不懂,翻页大概就是http://pic.auto.163.com/autopic/senddatammindexmain.jsp?pageindex=分页第1页http://pic.auto.163.com/autopic/senddatammindexmain.jsp?pageindex=0
第2页http://pic.auto.163.com/autopic/senddatammindexmain.jsp?pageindex=1
第3页http://pic.auto.163.com/autopic/senddatammindexmain.jsp?pageindex=2
从0开始,显示页码-1
,在点击初始列表分页http://pic.auto.163.com/autopic/senddatammindexmain.jsp?pageindex=0里德一个内容页时,路http://pic.auto.163.com/autopic/mmshowindex/topicid=28JE0008.html 后,这个页面跳转至http://pic.auto.163.com/autopic/index.html?url=http://pic.auto.163.com/autopic/mmshowindex/topicid=28JE0008.html,而这个跳转后的页面又在<iframe name="NT_PHVIEW" style="width:735px;" onload="this.height=NT_PHVIEW.document.body.scrollHeight" scrolling="no"frameborder="0" src="" marginwidth="0" border="0" id="NT_PHVIEW"></iframe> 依然是调用这个内容页,也就是URL参数后的
不用管这些,内容页直接测试http://pic.auto.163.com/autopic/mmshowindex/topicid=28JE0008.html 就可以
在这个页面测试,没有想到也是Ajax请求<div class="cbd2" id="Searchresult" >
正在载入数据……
</div>
用的下面的函数,和前面的差不多pageselectCallback(page_index, jq){
$.ajax({ //一个Ajax过程
type: "post", //以post方式与后台沟通
url : "http://pic.auto.163.com/autopic/senddatammshowindexmain.jsp", //与此php页面沟通
dataType:'script',//从jsp返回的值以 script方式 解释
data: 'pageindex='+page_index+'&topicid=4DU30008', //
success: function(script){//如果调用php成功
$('#Searchresult').empty().append(script);
}
});
return false;
}
这样要用自定义采集了,内容页地址http://pic.auto.163.com/autopic/senddatammshowindexmain.jsp?pageindex=这个内容页的分页&topicid=4DU30008,分页依然是从0开始
http://pic.auto.163.com/autopic/senddatammshowindexmain.jsp?pageindex=0&topicid=4DU30008,
点击吃页面下的内容页,<ul class="clearfix"><li><a target="_blank" href="http://auto.163.com/photoview/4DU30008/133451.html#q=1"><img height="210" width="140" alt=赛车宝贝 src="http://img4.cache.netease.com/photo/0008/2010-12-06/t_6N6EKJI84DU30008.JPG" /></a><h3><a target="_blank" href="http://auto.163.com/photoview/4DU30008/133451.html#q=1">赛车宝贝</a></h3></li> ,路http://auto.163.com/photoview/4DU30008/133451.html#q=1进入真正要采的内容页,又有分页,4,5层内容页面,好在这个最后的内容页图片地址都在在第一页里了,总的栓起来是4层网站,这样的用内容页分页是可以踩得,不过这个网站到这步分页会有不同的主题,所以可以导出一级,导入,再导出一级,这样就可以了,变成采内容时无分页的
全部可以采到了,这步的分页地址手动添加的http://pic.auto.163.com/autopic/mmshowindex/topicid=28JE0008.html,这样就可以了,图片可下载,每个主题一组图片
页:
1
2
[3]
4
5
6
7
8
9
10
11
12