質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

423閲覧

Jsoupでレビュースクレイピング  指定したクラスを出力

mobame

総合スコア20

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/18 06:16

編集2020/02/18 06:19

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2020/02/18 07:26

Amazonのサイトのソースがないと何とも言えないのですが、Javascriptで後からレビュー部分を表示しているようなことはないでしょうか。Jsoupでスクレイピングする場合、Javascriptで動的に表示した部分はうまく取得できなかったと思います。Jsourp.connect()で取得したdocumentをdocument.html()でログ等に出力してみて、目的のクラスが指定されているタグが出力されるか確認してみてはいかがでしょうか。
mobame

2020/02/18 08:30

ありがとうございます 自己解決できました
guest

回答1

0

自己解決

data-hook名を指定したら出力されました Element name = headline.select(".a-profile-name").first(); Element rating = headline.select(".a-icon-alt").first(); Element title = headline.select(".review-title").first(); Element date = headline.select(".review-date").first(); Element text = headline.select(".review-text").first(); 無事解決

投稿2020/02/18 08:27

mobame

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問