1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Javaで30行程度のスクレイピングをやってみる(CSV出力)

Posted at

#スクレイピングとは
ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。
スクレイピングするにあたって色々グレーゾーンがあるので気をつけたい。
参考:スクレイピングと法律

#目的
スクレイピングをつかって何ができるのかという話をしたい。
ここでは一部の具体例だが

  • 機械学習用のデータ収集
  • 企業のマーケティング用のデータ分析
  • アプリで使用するデータ収集

などなど様々な使い方がある。

#ソースコード

scraping.java
//インポート文は省略
public class scraping {
    public static void main(String[] args){
        //ファイルの用意
        PrintWriter p = null;
        try {
            p = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("出力先パス/sample.csv"),"Shift-JIS")));
            // ヘッダーを指定する
            //ここは自由に変更可能です
            // 列を増やしたい場合は,と列名をセットで追加してください
                p.print("列1");
                p.print(",");
                p.print("列2");
                p.println();
            //今回は列のキーとして使ってます
                int num = 1;
                Document document = Jsoup.connect("対象url").get();
                //クラス名やid名、タグ名など色々設定できます
                Elements elements = document.select("対象エレメント");
                //対象エレメントが複数ある場合取り出し
                for (Element element : elements) {
                    // 内容をセットする
                    p.print(num);
                    p.print(",");
                    p.print(element.text());
                    p.println();    // 改行
                    num++;
                }
               
            } catch (IOException e) {
                    System.out.println(e);
            }finally {
                p.close();
            }
        System.out.println("ファイル出力完了!");

    }
}

##メソッド

####document.select

Elements elements = document.select("対象エレメント");

対象エレメントには

  • body、pなどのタグ
  • .classなどのクラス名
  • #idなどのID名

を指定できる。
また、

  • document.select("p .name");

のようにpタグのnameクラスのような指定方法もある。

####element.text

for (Element element : elements) {
// 内容をセットする
p.print(num);
p.print(",");
p.print(element.text());
p.println(); // 改行
num++;
}

  • textメソッドを使うことで中身を取り出すことができる

#まとめ

結果的に30程度でjavaでスクレイピングを実現できた。
個人的にjavaが好きなのでやってみました。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?