使用Javascript获取最终HTML将Java呈现为字符串

Kil*_*ord 10 javascript java web-scraping

我想从HTML页面获取数据(刮掉它).但它包含javascript中的评论.在普通的java url fetch中,我只获得了没有执行Javascript的HTML(实际的).我想要执行Javascript的最终页面.

示例: - http://www.glamsham.com/movies/reviews/rowdy-rathore-movie-review-cheers-for-rowdy-akki-051207.asp

此页面的评论为facebook插件,以Javascript格式提取.

即使在此也类似于此. http://www.imdb.com/title/tt0848228/reviews

我该怎么办?

Iva*_*nos 7

使用phantomjs:http://phantomjs.org

var page = require('webpage').create();
page.open("http://www.glamsham.com/movies/reviews/rowdy-rathore-movie-review-cheers-for-rowdy-akki-051207.asp")
setTimeout(function(){
    // Where you want to save it    
    page.render("screenshoot.png")  
    // You can access its content using jQuery
    var fbcomments = page.evaluate(function(){
        return $(".fb-comments iframe").contents().find(".postContainer") 
    }) 
},10000)
Run Code Online (Sandbox Code Playgroud)

你必须使用幻像中的选项--web-security=no来允许跨域交互(即对于facebook iframe)

要与phantomjs中的其他应用程序通信,您可以使用Web服务器或发出POST请求:https://github.com/ariya/phantomjs/blob/master/examples/post.js

  • 你不想用土豆做这件事是件好事; 男人......那会很难! (4认同)

小智 5

您可以使用HTML Unit,这是一个基于Java的“ GUI LESS浏览器”。您可以轻松获取任何页面的最终渲染输出,因为这会像Web浏览器那样加载页面并返回最终渲染输出。您可以禁用此行为。

更新:您在问一个例子吗?您无需为此做任何额外的事情:

例:

WebClient webClient = new WebClient();
HtmlPage myPage = ((HtmlPage) webClient.getPage(myUrl));
Run Code Online (Sandbox Code Playgroud)

更新2:您可以按以下方式获取iframe:

HtmlPage myFrame = (HtmlPage) myPage.getFrameByName(myIframeName).getEnclosedPage();
Run Code Online (Sandbox Code Playgroud)

请阅读上面链接中的文档。关于在HTMLUnit中获取页面内容,您无能为力