間に実際のブラウザを介さずに、Java プログラミング言語を介して HTMl ページのフォームにアクセスしたいと考えています。
現在、HTML UNITを使用して実行していますが、ページの読み込みに少し時間がかかります。何百万ものページにアクセスする場合、この余分なビット時間が最も重要になります。
これを行うための他の方法はありますか?
間に実際のブラウザを介さずに、Java プログラミング言語を介して HTMl ページのフォームにアクセスしたいと考えています。
現在、HTML UNITを使用して実行していますが、ページの読み込みに少し時間がかかります。何百万ものページにアクセスする場合、この余分なビット時間が最も重要になります。
これを行うための他の方法はありますか?
以前にhttpunitと呼ばれるものを使用したことがありますが、パフォーマンスがどのように比較されるかわかりません。
処理するページが数百万ある場合は、さらにスレッドを追加することをお勧めします。単なる推測ですが、これを複数のスレッドにスケールアップすると、CPU パワーが不足する前に帯域幅が不足すると思います (その場合、どれだけ速くなるかは問題ではありません)。
ブラウザーを使用して Web ページにアクセスすると、たとえ HtmlUnit であっても遅くなります。より良い方法は、ウェブ インターフェースのすぐ下のレイヤーをテストすることです。これにより、何百万ものページにアクセスする必要がなくなります。代わりに、ウェブ インターフェースが下のレイヤーを正しく使用していることを確認するのに十分なテストを行います。
ブラウザーでの対話のほとんどは、HTTP GET または HTTP POST に帰着します。必要な操作を正確に把握する必要があります。その後、URL やフォーム データを作成できます。次に、次のようなものを使用できます。
try {
//Construct data
String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
// Send data
URL url = new URL("http://hostname:80/cgi");
URLConnection conn = url.openConnection(); conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line; while ((line = rd.readLine()) != null) {
// Process line... }
wr.close();
rd.close();
} catch (Exception e) { }