とあるプロジェクトでHTMLファイルをJavaで扱うことになり方法を検討しました。
結論としては、JavaでHTMLファイルを取り扱うにはライブラリを使うのが良いそうです。
JavaでHTMLを扱うライブラリで、Jsoupというライブラリがあります。
このJsoupライブラリは英語のサイトしか情報がなく困ったので
今回は、このJsoupというライブラリについて詳しく解説していきます。
Jsoupライブラリとは
JsoupはJavaで実際のHTMLファイルを操作するためのライブラリのことです。
Jsoupには、以下の特徴があります。
・URL、ファイル、または文字列からHTMLをスクレイピングし解析する
・DOMトラバーサル、CSSセレクターで、データの「検索」、「抽出」を実現する
・HTMLファイルの「要素」、「属性」、「テキスト」を操作する
JsoupはHTMLファイルの属性なども操作することもできるので、
タグや
jsoupはオープンソースです。ソースコードはGitHubで入手することができます。
github.com
Jsoupの使い方
使い方としてはJsoupライブラリで、該当ファイルの読み込み→Parse→Documentオブジェクトという形で扱うことができます。
※parseっていうのはタグなどを解析して扱える形に変更することです。
Parseについてはこちらの記事で詳しく書いてありますので参考にしてみてください。
https://wa3.i-3-i.info/word13628.html
Jsoupの使い方①URLで指定したWEBページ扱う
public class Main { public static void main(String[] args) throws IOException { Document document = Jsoup.connect("http://www.google.co.jp").get(); System.out.println(document.html()); } }
connectでURLを指定して取ってきたページをDocument型の変数にParseして格納する。
DocumentオブジェクトでHTMLの情報を保持し操作することができる。
Jsoupの使い方②ファイルパスを指定して普通にParseして使う
public class Main { public static void main(String[] args) throws IOException { Document document = Jsoup.parse(new File("ファイルパス"),String,("文字コード")) System.out.println(document.html()); } }
Jsoupはファイルオブジェクトと文字コードを引数にHTMLファイルをParseすることができます。
Jsoupの使い方③ HTMLのタグ"<>"を指定して要素の取り出し
public class Main { public static void main(String[] args) throws IOException { Document document = Jsoup.parse(new File("ファイルパス"),("文字コード")) document.select("br").forEach(System.out::println); } }
HTMLをParseしてHTMLファイル内のbrタグの要素を取り出して出力まで行っています。
SelectでIDやタグを指定することで、その要素と配下を取り出すことができる。
最後まで読んでいただきありがとうございました!
他にもJava系の記事も書いていますので読んでいただけると嬉しいです。