网页中的Javascript问题

lknight 发布于 2016/01/11 13:17
阅读 278
收藏 0

@自风 你好,想跟你请教个问题:HTML是这样子的:<td nowrap=""><a href="/guoneixinwen.shtml">首页</a>&nbsp;<a href="#" onclick="javascript:if(!isIndex){go(curPage-1)};return false;">上一页</a>&nbsp;<a href="#" onclick="javascript:go(curPage+1);return false;">下一页</a>&nbsp;

想拿下一页的URL该怎么取?

加载中
0
m
ming3853
获取当前页面的URL不就行了?
m
ming3853
回复 @lknight : 用document.URL取得当前页面的URL。
l
lknight
怎么配置xml呢?
l
lknight
能具体点吗? 本页url为:http://news.sohu.com/guoneixinwen.shtml 下页url为:http://news.sohu.com/guoneixinwen_7829.shtml 改怎么取?
0
Broly
Broly
这个是原网页里面跳转到下一页的函数,你可以分析选这个过程
<script language="JavaScript">
	var indexUrl = '/guoneixinwen.shtml';
	var docUrl = document.location.href;
	var maxPage = 7833;
	var curPage = 1;
	var isIndex = false;
	var showPages = 100;
	var end = docUrl.lastIndexOf("/");
	if(end > 0){
		var realDocUrl = docUrl.substring(end);
		var lastToken = realDocUrl.lastIndexOf("_");
		var lastSuffix = realDocUrl.lastIndexOf(".shtml");
		if( (realDocUrl)!= indexUrl && lastToken>0 && lastSuffix >0 && lastSuffix > lastToken ){
			curPage = realDocUrl.substring(lastToken+1,lastSuffix);
			curPage = maxPage-curPage+1;
		}else{
			isIndex = true;
		}
	}
	if(isNaN(curPage)){
		curPage = 1;
	}
	var index = "<span><b>"+curPage+"/"+(maxPage>showPages?showPages:maxPage)+"</b></span>";
	document.getElementById("pagingIndex").innerHTML=index;
	function go(page){
		try{
		var baseUrl = '/guoneixinwen';
		//var page = document.getElementById("pagenav").value;
		var url = '';
			if (page >0&&page <=showPages){
				page = maxPage - page+1;
				if(page <= 0 || page == maxPage ){
					url = indexUrl;;			
				}else{
					url = baseUrl+'_'+page+'.shtml';			
				}
				document.location.href=url;
				return true;
			}else if(page == maxPage){
				if(maxPage > showPages){
					url = baseUrl+'_'+(maxPage-showPages+1)+'.shtml';			
				}else{
					url = baseUrl+'_1.shtml';			
				}
				document.location.href=url;
				return true;
			}else{
				return false;
			}
			}catch(e){
				alert("Sorry:"+e);
			}
		return false;
	}
</script>



0
自风
自风

楼上两位的思路都OK,第一位是建议你从当前URL入手,首先你分析下你的网页分页是刷新整个网页的不?如果是刷新整个网页,那么URL地址就会变动,这时候你就紧紧抓住那个分页关键参数的变化即可,如果不是刷新整个网页,而是通过Ajax改变局部元素,那你就需要去分析这个Ajax请求了。第二位建议你去分析网页源码,搞清楚它JS的执行逻辑,然后把这个逻辑放到#Spiderman#的xml里面模拟出来即可,注意如何获取关键参数是重点。最后,如果以上办法都不行,那可以使用浏览器Downloader,通过模拟点击上一页,下一页按钮抽取页面渲染后的内容来达到目标。

自风
自风
@lknight 不兼容,但是解析规则的配置基本大同小异
l
lknight
@自风 嗯嗯,好。不过spiderman2跟版本1兼容性好吗?以前配置的xml文件还能不能用呢?还有就是有没有打包好的jar包?直接新建工程再的话对于其他jar包的导入很是头疼。。。
自风
自风
回复 @lknight : 好的,我建议你使用新版的Spiderman2,会更适合你的需求
l
lknight
回复 @自风 : 谢谢,现在一直是用jar包来跑程序,源码的还跑不起来。。现在又来新任务了,过两天再看。。o(╯□╰)o 大神如果不介意的话加个QQ吧,能不能详细请教?1159950300
自风
自风
回复 @lknight : 嗯,用exp调Java方法也是不错的方式,你自己写一个处理函数,然后注册到Fel上面来,再用到这里,你试试自己修改源码来实现~
下一页
返回顶部
顶部