如何抓取页面中JS生成的HTML代码?

wsj1987 2010-09-09 12:42:48
http://sosu.qidian.com/searchresult.aspx?searchkey=%E4%BB%80%E4%B9%88&searchtype=%E4%B9%A6%E5%90%8D

比如这个页面中的书籍列表,这个列表是用JS生成的
我现在抓出的页面中源代码显示是“数据正在加载中。。”
这个JS应该是替换那部分了,我也没细看,我想知道如何抓取JS生成后的代码(下面列表部分的)。

==================以下是页面中生成的部分===================
什么是什么 / v海啸v / 都市 查看评论 / 作品目录 / 加入书架
简 介: 不爱看,极端的,暴力的,反叛的,反传统思想的,未成年的读者勿进
最新更新:正文 邪恶篇之 圣战更新时间:2009-5-10 10:45
...全文
848 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqq1985 2012-01-15
  • 打赏
  • 举报
回复
client.waitForBackgroundJavaScript(120*1000);
设置下时间等待就OK了
HTMLUnit acts like a real browser
所有它会像浏览器那要加载所有的脚本
cqq1985 2012-01-15
  • 打赏
  • 举报
回复
使用HTMLUnit 就ok
//final WebClient webClient = new WebClient();
String url="http://tuan.paipai.com/?PTAG=20084.3.12#filter=0-0";
//final HtmlPage page = webClient.getPage("http://tuan.paipai.com/?PTAG=20084.3.12#filter=0-0");
// WebClient client = new WebClient( BrowserVersion.INTERNET_EXPLORER_8 ,"127.0.0.1", 28089 );
final WebClient client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);

final HtmlPage page =client.getPage(url);
// client.waitForBackgroundJavaScript(300000);
client.waitForBackgroundJavaScript(120*1000);
//get list of all divs
// final List divs = (List) page.getByXPath("//div");
HtmlElement he =page.getElementById("dealList");
//get div which has a 'name' attribute of 'John'
// final HtmlDivision div = (HtmlDivision) page.getByXPath("//div[@name='John']").get(0);
System.out.println(he.asXml());
System.out.println(he.getFirstChild());
System.out.println(he.getFirstChild().asXml());
client.closeAllWindows();
wsj1987 2010-09-09
  • 打赏
  • 举报
回复
人呢人呢人呢人呢人呢

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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