JSOUP を使用して、この URL からクラスを持つすべての div タグを取得しようとしています。各製品のすべての名前と価格のリストを作成したいと考えています。具体的には、class="item-name" と class="item-price" を持つ div タグを探しています。
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("http://www.games-workshop.com/gws/catalog/listProducts.jsp?catId=cat440176a").get();
Elements content = doc.select("div[class]");
for(Element src : content) {
System.out.println(src.text());
}
}
このコードを実行すると、class 属性を持つすべての div タグが返されるわけではなく、ページの上部と下部の一部のみが返されます。いくつかの div タグを取得しているので、これは彼らの Web ページの処理方法と関係があると思います。なぜ私がdivタグの一部しか取得していないのか、誰かが光を当てることができるかもしれないと思っていました.
編集
OK、一貫性のないhtmlページを持っている他の人に関する他の記事をいくつか見た後、新しいアプローチを試すことにしました。これは、探しているhtmlを生成するスクリプトと関係があるようです。現在、ページを生成するために htmlUnit を取得しようとしており、JSOUP を使用して解析したいと考えています。
public static void main(String[] args) throws IOException {
WebClient webClient = new WebClient();
webClient.setCssEnabled(true);
webClient.setAppletEnabled(true);
webClient.setJavaScriptEnabled(true);
webClient.setTimeout(7000);
WebRequest request = new WebRequest(new URL("http://www.games-workshop.com/gws/catalog/listProducts.jsp?catId=cat440176a"));
Page page = webClient.getPage(request);
String webpage = page.getWebResponse().getContentAsString();
System.out.println(webpage);
}
}
このコードを実行すると、多くの赤いエラーが発生します。ここにエラーhttp://pastebin.com/LHr7R7U1があります。誰かが回避策を手伝ってくれることを願っています。