12

HTMLページからデータを取得したい(スクレイピング)。ただし、javascript のレビューが含まれています。通常のJava url fetchでは、Javascriptを実行せずにHTML(実際のもの)のみを取得しています。Javascript が実行された最終ページが必要です。

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

このページには、Javascript として取得される facebook プラグインとしてのコメントがあります。

これもこれに似ています。 http://www.imdb.com/title/tt0848228/reviews

私は何をすべきか?

4

3 に答える 3

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)

--web-security=noクロスドメインの相互作用を許可するには、ファントムでオプションを使用する必要があります(つまり、facebook iframe の場合)。

phantomjs から他のアプリケーションと通信するには、Web サーバーを使用するか、POST リクエストを作成します: https://github.com/ariya/phantomjs/blob/master/examples/post.js

于 2012-06-03T17:31:47.330 に答える
6

HTMLユニット、Javaベースの「GUILESSブラウザ」を使用できます。Webブラウザとしてページをロードし、最終的なレンダリング出力を返すため、任意のページの最終的なレンダリング出力を簡単に取得できます。ただし、この動作を無効にすることはできます。

更新:あなたは例えば尋ねていましたか?それを行うために特別なことをする必要はありません。

例:

WebClient webClient = new WebClient();
HtmlPage myPage = ((HtmlPage) webClient.getPage(myUrl));

更新2:次のようにiframeを取得できます。

HtmlPage myFrame = (HtmlPage) myPage.getFrameByName(myIframeName).getEnclosedPage();

上記のリンクからドキュメントをお読みください。HTMLUnitでページコンテンツを取得することについてあなたができないことは何もありません

于 2012-06-04T06:38:13.013 に答える
0

その問題を解決する簡単な方法。 こんにちは、HtmlUnit is Java API を使用できます。実行された js コンテンツに単純な html としてアクセスするのに役立つと思います。

WebClient webClient = new WebClient();
HtmlPage myPage = (HtmlPage) webClient.getPage(new URL("YourURL"));
System.out.println(myPage.getVisibleText());
于 2020-03-24T20:44:50.980 に答える