0

要求を実行して動的 Web サイトから応答を取得したいのですが、通常のブラウザー (クロムなど) でこれを実行し、ソース コードを表示すると、すべてのテキストが表示されます (javascript は表示されません) が、wget または HttpClient を実行しようとすると、 javascript を使用し、テキストを使用しない応答。

テキストは動的ですが、最終的なソース コード (テキスト付き) を受け取るにはどうすればよいですか?

明確でない場合は、次の手順に従ってください。

1 - http://www.stj.jus.br/webstj/processo/Justica/detalhe.asp?numreg=201201911000&pv=010000000000&tp=51にアクセスします。

2 - 要素を検査し、detalhe.asp のソース コードを確認する

3 - ターミナルを開き、wget を使用してこのページを取得します

今、あなたは違いを見ることができますか?

----編集----助けがあれば、HttpClientでこれをやろうとしています:

private static InputStream getPageSource(String url)  {
    InputStream inputStream = null;
    try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response = httpclient.execute(new HttpGet(url));
            StatusLine statusLine = response.getStatusLine();
            if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                response.getEntity().writeTo(out);
                out.close();
                String responseString = out.toString();
                //..more logic
                System.out.println(responseString);

                inputStream = response.getEntity().getContent();
            } else{
                //Closes the connection.
                response.getEntity().getContent().close();
                throw new IOException(statusLine.getReasonPhrase());
            }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return inputStream;
}

---- 編集 2 ---- ヘッダーに 1 つのフィールドを入れてこの作業を行うようにしました: Referer

httpclient を実行する前に次の行を追加した場合: get.setHeader("Referer", "http://www.stj.jus.br/webstj/processo/Justica/pagina_lista.asp"); すべてが機能します..だから、今の問題は次のとおりです。

このパラメーター (Referer) を HttpClient から自動的に取得するにはどうすればよいですか?

4

3 に答える 3

0

Wget は、javascript を解釈して実行しないという点で、ブラウザの役割を果たしません。特定の URL でリソースを要求し、それをファイルに保存するだけです。コンテンツもロードする場合は、JavaScript エンジンにアクセスする必要があります。インターフェイスを持つSeleniumの使用を検討することをお勧めしJavascriptExecutorます。

于 2012-11-29T02:01:02.663 に答える
0

私は同様の問題を調査していますが、私が遭遇し続ける答えはhttp://htmlunit.sourceforge.net/を試す ことです。javascript エンジンが組み込まれています。環境によっては、Seleniumの欠点は、対話するためにブラウザーをインストールする必要があることです。

于 2013-01-08T21:23:31.803 に答える
0

申し訳ありませんが、ここでの問題はセキュリティに関するものです。セキュリティ上の理由から、REFERER は「http://www.stj.jus.br/webstj/processo/Justica/pagina_lista.asp」で設定する必要があるため、リダイレクトや問題は発生しません。このようなもの、ただのセキュリティ。

これを見ることができなかったので、質問を投稿する前に。

ありがとう。

于 2012-11-29T13:12:19.750 に答える