请问如何抓取用JS分页的网页内容
我要抓取一个网站的内容,这个网站分页机制是用js的。具体如下:
[size=10px]
<a href="javascript:gogage(pageno+1)" class="navigation">下一页</a>
var pageno=1; function gogage(pno){ tbl.firstPage(); pageno=1; for(var i=1; (i < pno||pno==-1)&&i<xmldso.recordset.PageCount; i++,pageno++) tbl.nextPage(); document.all.currentpage.innerText=pageno; }<table width="98%" border="0" cellspacing="1" cellpadding="1" id="tbl" datasrc="#xmldso" datapagesize="11">
}
});
Node node = nodes.elementAt(0);
text.append(new String(node.toPlainTextString().getBytes("8859_1")));
return text.toString();
}
/**
* 读取文件的方式来分析内容. filePath也可以是一个Url.
*
* @param resource
* 文件/Url
*/
public static void test5(String resource) throws Exception {
Parser myParser = new Parser(resource);
// 设置编码
myParser.setEncoding("GBK");
String filterStr = "table";
NodeFilter filter = new TagNameFilter(filterStr);
NodeList nodeList = myParser.extractAllNodesThatMatch(filter);
TableTag tabletag = (TableTag) nodeList.elementAt(11);
System.out.println(tabletag.toHtml());
System.out.println("==============");
}
/*
* public static void main(String[] args) { TestYahoo testYahoo = new
* TestYahoo(); testYahoo.testHtml(); }
*/
public static void main(String[] args) throws Exception {
test5("http://sports.yahoo.com/nba/scoreboard");
}
}
[解决办法]
ConnectionManager cm = new ConnectionManager();
cm.setProxyHost("XXX.XXX.XXX.XXX");
cm.setProxyPort(8080);
[解决办法]
学习了
[解决办法]
如果数据是一次下载下来,JS只是分页的话,那还可以获取
如果是用AJAX,点一次下载一次数据,那就不好办了。
提供2个思路:
1.分析它的JS,自己发送信息到服务器,从返回数据里取
2.创建一个类似.NET里webbrowser的对象,用它打开那个网页,模拟点击下一页,然后再获取信息
[解决办法]
长见识了。。