前提・実現したいこと
Jsoupでレビュースクレイピング(Amazonレビュー) 指定したクラスを出力させたいです
指定したクラスが全て出力されません。
どのように指定すればできるかご教授いただけないでしょうか。
発生している問題・エラーメッセージ
何も出力されません。 レビューの部分だけ出力されない ※レビュー以外は出力されます。
該当のソースコード
Java
1 2public class Amazon { 3 4 public static void main(String[] args) { 5 // TODO 自動生成されたメソッド・スタブ 6 System.setProperty("jdk.http.auth.tunneling.disabledSchemes", ""); 7 8 Authenticator.setDefault(new Authenticator() { 9 @Override 10 protected PasswordAuthentication getPasswordAuthentication() { 11 return new PasswordAuthentication("*******", "******".toCharArray()); 12 } 13 }); 14 15 PrintWriter p = null; 16 try { 17 p = new PrintWriter(new BufferedWriter(new OutputStreamWriter( 18 new FileOutputStream("出力先パス\amazon.csv"), "Shift-JIS"))); 19 // ヘッダーを指定する 20 //ここは自由に変更可能です 21 // 列を増やしたい場合は,と列名をセットで追加してください 22 p.print("No"); 23 p.print(","); 24 p.print("Name"); 25 p.print(","); 26 p.print("Rating"); 27 p.print(","); 28 p.print("Title"); 29 p.print(","); 30 p.print("date"); 31 p.print(","); 32 p.print("Text"); 33 p.println(); 34 //今回は列のキーとして使ってます 35 int num = 1; 36 Document document = Jsoup.connect("https://www.amazon.co.jp/product-reviews/B07YYDSPP7/ref=cm_cr_arp_d_viewpnt_lft?ie=UTF8&showViewpoints=1&filterByStar=positive&pageNumber=1").proxy("*******", ****).get(); 37 //クラス名やid名、タグ名など色々設定できます 38 Elements elements = document.select(".review"); 39 //対象エレメントが複数ある場合取り出し 40 for (Element headline : elements) { 41 Element name = headline.select(".a-profile-name").first(); 42 Element rating = headline.select(".a-icon-alt").first(); 43 Element title = headline.select(".a-size-base a-link-normal review-title a-color-base review-title-content a-text-bold").first(); 44 Element date = headline.select(".a-size-base a-color-secondary review-date").first(); 45 Element text = headline.select(".a-size-base review-text review-text-content").first(); 46 if (name == null) 47 continue; 48 // 内容をセットする 49 p.print(num); 50 p.print(","); 51 p.print(name.text()); 52 p.print(","); 53 p.print(rating.text()); 54 p.print(","); 55 p.print(title.text()); 56 p.print(","); 57 p.print(date.text()); 58 p.print(","); 59 p.print(text.text()); 60 p.println(); 61 num++; 62 } 63 } catch (IOException e) { 64 System.out.println(e); 65 } finally { 66 p.close(); 67 } 68 System.out.println("ファイル出力完了!"); 69 70 } 71}
試したこと
補足情報(FW/ツールのバージョンなど)
Eclipse Pleiades2019-12・jdk1.8.0_241・jsoup-1.12.1
回答1件
あなたの回答
tips
プレビュー