私は、Web ページから情報をスクレイピングしている小さなプロジェクトに取り組んでいます。最初のステップとして、次のページのソースを調べ始めました。
http://www.walmart.com/search/search-ng.do?search_query=camera&ic=16_0&Find=Find&search_constraint=0
何をする必要があるかを分析した後、2 つの方法を使用して同じページ情報を取得しようとしましたが、どちらも失敗しました
最初に、次のような Jsoup を使用して簡単なリクエストを試みました。
Document doc;
try {
doc = Jsoup.connect("http://www.walmart.com/search/search-ng.do?search_query=camera&ic=16_0&Find=Find&search_constraint=0").get();
System.out.println(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
これにより、一部のページ情報が表示されましたが、すべての検索結果を含む実際のページ ソースは表示されませんでした
次に、次のようなApache Commons httpソリューションを試しました
String url = "http://www.walmart.com/search/search-ng.do?search_query=camera&ic=16_0&Find=Find&search_constraint=0";
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
HttpResponse response;
try {
response = httpclient.execute(request);
StatusLine status = response.getStatusLine();
String responseString = EntityUtils.toString(response.getEntity());
System.out.println(status);
System.out.println(responseString);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
しかし、ページが完全に移動されたというステータスを受け取り続けます。
これまでのところ、Jsoup が前進するための最良の選択肢のようです。すべての検索結果を受信しないという問題は、Jsoup の get 関数によって呼び出されたときに実行されていないページ上のスクリプトに関係していると思います。
検索結果から情報を取得できるように、すべてのページ情報を取得するにはどうすればよいでしょうか。