#スクレイピングとは
ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。
スクレイピングするにあたって色々グレーゾーンがあるので気をつけたい。
参考:スクレイピングと法律
#目的
スクレイピングをつかって何ができるのかという話をしたい。
ここでは一部の具体例だが
- 機械学習用のデータ収集
- 企業のマーケティング用のデータ分析
- アプリで使用するデータ収集
などなど様々な使い方がある。
#ソースコード
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が好きなのでやってみました。