请问如何抓取用JS分页的网页内容

luisszhou 2009-08-11 01:39:38
我要抓取一个网站的内容,这个网站分页机制是用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">

请高手赐教!
...全文
623 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
windsna 2012-09-07
  • 打赏
  • 举报
回复
顶起,但是我想要的是,只用javascript语句或者是jquery,获取其他页面的内容。有知道的,说声。谢谢
luisszhou 2009-08-11
  • 打赏
  • 举报
回复
另外,打开网页速度慢,但是点击“下一页”翻页速度很快,每页20条记录,可以看出如楼上 iroyal 所言,“数据是一次性获取的,JS只是分页”。

还请大家赐教,该怎么得到这个“一次性获取”的数据呢。
luisszhou 2009-08-11
  • 打赏
  • 举报
回复
貌似不是ajax操作吧。
Abin-2008 2009-08-11
  • 打赏
  • 举报
回复
长见识了。。
luisszhou 2009-08-11
  • 打赏
  • 举报
回复
感谢上面各位的指点,和帮顶。

我看了一下这页面,发现这个页面的数据基本是这样构成的,但还是没有什么头绪。。。小弟不懂.net的。


<table width="98%" border="0" cellspacing="1" cellpadding="1" id="tbl" datasrc="#xmldso" datapagesize="11">

<xml id="xmldso" src="/XMLQuery?aid=123" onDataSetChanged="init()"></xml>


iroyal 2009-08-11
  • 打赏
  • 举报
回复
如果数据是一次下载下来,JS只是分页的话,那还可以获取

如果是用AJAX,点一次下载一次数据,那就不好办了。
提供2个思路:
1.分析它的JS,自己发送信息到服务器,从返回数据里取
2.创建一个类似.NET里webbrowser的对象,用它打开那个网页,模拟点击下一页,然后再获取信息
  • 打赏
  • 举报
回复
学习了
CYBEREXP2008 2009-08-11
  • 打赏
  • 举报
回复
ConnectionManager cm = new ConnectionManager();
cm.setProxyHost("XXX.XXX.XXX.XXX");
cm.setProxyPort(8080);
CYBEREXP2008 2009-08-11
  • 打赏
  • 举报
回复
利用htmlparser抓取网页内容(一)
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.TableTag;
import org.htmlparser.util.NodeList;

/**
* <br>
* 标题: <br>
* 功能概要: <br>
* 版权: cityyouth.cn (c) 2005 <br>
* 公司:上海城市青年网 <br>
* 创建时间:2005-12-21 <br>
* 修改时间: <br>
* 修改原因:
*
* @author 张伟
* @version 1.0
*/
public class TestYahoo {
public static void testHtml() {
try {
String sCurrentLine;
String sTotalString;
sCurrentLine = "";
sTotalString = "";
java.io.InputStream l_urlStream;
java.net.URL l_url = new java.net.URL(
"http://sports.sina.com.cn/iframe/nba/live/");
java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url
.openConnection();
l_connection.connect();
l_urlStream = l_connection.getInputStream();
java.io.BufferedReader l_reader = new java.io.BufferedReader(
new java.io.InputStreamReader(l_urlStream));
while ((sCurrentLine = l_reader.readLine()) != null) {
sTotalString += sCurrentLine;
}
System.out.println(sTotalString);

System.out.println("====================");
String testText = extractText(sTotalString);
System.out.println(testText);
} catch (Exception e) {
e.printStackTrace();
}

}

/**
* 抽取纯文本信息
*
* @param inputHtml
* @return
*/
public static String extractText(String inputHtml) throws Exception {
StringBuffer text = new StringBuffer();

Parser parser = Parser.createParser(new String(inputHtml.getBytes(),
"8859_1"), "8859-1");
// 遍历所有的节点
NodeList nodes = parser.extractAllNodesThatMatch(new NodeFilter() {
public boolean accept(Node node) {
return true;
}
});
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");
}
}
llj480028 2009-08-11
  • 打赏
  • 举报
回复
帮顶!
dahaidao 2009-08-11
  • 打赏
  • 举报
回复
把html页取下来,数据在"#xmldso"指定的位置,也取下来,就是全部内容了。和分页关系不大.
dzxccsu 2009-08-11
  • 打赏
  • 举报
回复
帮忙顶!
luisszhou 2009-08-11
  • 打赏
  • 举报
回复
自顶,请知道的兄弟指点下

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧