スクレイピングし特定の要素をファイルに書き出す
やること
jsoupというライブラリを使ってスクレイピングし、特定の要素をファイルに書き出す。その際JSON形式で書き出す。(eclipseで動作)
背景
サービスの連携先を調べていたら、幸運にも(?)たくさん連携先があるサービスに出会いました。これらのサービス名をコピーしてJSON形式{"Name":"Service_name","Connectivity":"1"}
に入れていくのは大変だと思い作成。
今回扱うサービスはHighriseの連携先。
使うライブラリ
jsoupというHTMLをスクレイピングができるライブラリを使う。
公式ページ:http://jsoup.org/
ダウンロードページ:http://jsoup.org/download
Webページのどのタグに欲しい情報があるか確認
HTMLを見てみると、、
となり欲しい情報(サービスの名前)はappクラスのh4タグのaタグの中であると確認できました。
Eclipseにダウンロードした.jarファイルを追加
[package]を右クリック→[ビルドパス]→[ビルドパスの構成]をクリック
以下の画面が表示される。
[外部JARの追加]をクリックし、先ほどダウンロードしたjsoupの.jarファイルを選択
その後[適用して閉じる]をクリック。これで追加完了。
"参照ライブラリー"というものができていてその中に追加された.jarファイルが入っていることを確認。
コードの作成
jsoupをインポート
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
上記を記述。
ファイル操作を書いていく
例外処理など忘れずに。
import java.io.FileWriter;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Main {
public static void main(String[] args) {
FileWriter fw = null;
try {
//ファイルの書き込み
}catch(IOException e) {
System.out.println("ファイル書き込みエラーです");
}finally {//ファイルを閉じる
if(fw != null) {
try {
if(fw != null) {
fw.close();
}
}catch(IOException e2) {}
}
}
}
}
ファイルの書き込み部分にコードを書いていく
//ファイルを開く
fw = new FileWriter("[書き込むファイルのパス]", true);
//ファイルに書き込む
Document document = Jsoup.connect("https://highrisehq.com/extras/").get();
Elements elements = document.select(".app h4 a");
for (Element element : elements) {
String name = element.text();
fw.write("{\"Name\":\"" + name + "\",\"Connectivity\":\"1\"}\n");
System.out.println(name);
}
fw.flush();
Jsoup.connect("URL").get();
でWebサイトのHTMLを読み込み
document.select("タグ");
で必要なHTMLタグを見つける。この場合、複数該当するのでelementsには該当するものが全部入っています。
for
で1つづつ取り出します
element.text();
で該当したHTMLのテキストを取得。(属性の場合はtextではなくattr("属性名")
)
ファイルに書き込む際はJSON形式なので今回は{"Name":"Service_name","Connectivity":"1"}
に合わせる。
※サイトの連携先一覧におすすめサービスがあり4つ重複がありました。(書き出したもののはじめ4つ)
参考にさせていただいたもの
ありがとうございました。
jsoup使い方メモ:https://qiita.com/opengl-8080/items/d4864bbc335d1e99a2d7
Javaでスクレイピングをしよう!!:https://qiita.com/takahiroSakamoto/items/c2b269c07e15a04f5861
■[Java][Html Parser][jsoup]jqueryみたいに、htmlを操作できるJavaのライブラリ「jsoup」の使い方。:http://d.hatena.ne.jp/it-tech-dm/20110123/1295774869
Author And Source
この問題について(スクレイピングし特定の要素をファイルに書き出す), 我々は、より多くの情報をここで見つけました https://qiita.com/Terry3/items/0c1829130111967773bf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .