SlideShare a Scribd company logo
じっくり
コトコト
煮込んだ
Javaスープ
株式会社ビズリーチ
芹沢和洋
@seri_k
第二回 渋谷java
自己紹介
芹沢和洋
株式会社ビズリーチ
エンジニア
@seri_k
id:serihiro
Blog:seri::Programing Diary
エグゼクティブの転職サイト
の中の人
個人宣伝:
Slideshareの
日本語スライドを検索でき
るサービスとか
作ってます
http://slidesearch.jp
毎月のVPS代より高いドメイン(;・∀・)
一度は
営業さんとか
マーケさんから
受ける相談
○○っていうサイトから
××っていう情報集めてよ
こうプログラムでサクっと
明後日ぐらいにデータちょう
だい
いい感じに
どうする?
っつーか簡
単に言うな
• OSSのHTMLパーサー
• jQueryのセレクタっぽく
html要素を取得できる
• HTTPクライアントとしても使え
る子
そこでjsoupですよ
http://jsoup.org/
使い方
(setupはpomに書いてドーン)
Document doc =
Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines =
doc.select("#mp-itn b a");
String html = newsHeadlines.html();
System.out.println(html);
実行すると
<a href="/wiki/Thor%27s_hero_shrew" title="Thor's hero shrew">Thor's hero
shrew</a>
<a href="/wiki/Santiago_de_Compostela_derailment" title="Santiago de Compostela
derailment">A train crash</a>
<a href="/wiki/Prince_George_of_Cambridge" title="Prince George of
Cambridge">Prince George of Cambridge</a>
<a href="/wiki/2013_Dingxi_earthquakes" title="2013 Dingxi earthquakes">series of
earthquakes</a>
<a href="/wiki/2013_Colombian_clashes" title="2013 Colombian
clashes">Clashes</a>
<a href="/wiki/Philippe_of_Belgium" title="Philippe of Belgium">Philippe</a>
<a href="/wiki/2013_Open_Championship" title="2013 Open Championship">Open
Championship</a>
<a href="/wiki/Deaths_in_2013" title="Deaths in 2013">Recent&nbsp;deaths</a>
<a href="/wiki/Portal:Current_events" title="Portal:Current
events">More&nbsp;current&nbsp;events...</a>
じっくりコトコト煮込んだJavaスープ
このサンプルでパースする対象の
html(抜粋)
<div id="mp-itn">
<div style="float:right;margin-left:0.5em;"><a href="/wiki/File:Tragedia_en_Santiago_de_Compostela_(a).jpg"
title="Santiago de Compostela derailment"><img alt="Santiago de Compostela derailment"
src="//upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Tragedia_en_Santiago_de_Compostela_%28a%29.
jpg/100px-Tragedia_en_Santiago_de_Compostela_%28a%29.jpg" width="100" height="67"
srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Tragedia_en_Santiago_de_Compostela_%28a%
29.jpg/150px-Tragedia_en_Santiago_de_Compostela_%28a%29.jpg 1.5x,
//upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Tragedia_en_Santiago_de_Compostela_%28a%29.jpg/
200px-Tragedia_en_Santiago_de_Compostela_%28a%29.jpg 2x" /></a></div><ul><li style="-moz-float-edge:
content-box">
<b>
<a href="/wiki/Thor%27s_hero_shrew" title="Thor's hero shrew">Thor's
hero shrew</a>
</b>
…..
</div>
さらに<a>タグの文字列だけ欲しい
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines =
doc.select("#mp-itn b a");
for (Element element : newsHeadlines) {
System.out.println(element.html());
}
Thor's hero shrew
A train crash
Prince George of Cambridge
series of earthquakes
Clashes
Philippe
Open Championship
Recent&nbsp;deaths
More&nbsp;current&nbsp;events...
こいつは便利
• URLをそのまま指定できる
• テキストファイルのHTML読み込んでパースすることも出来
る
• HttpUrlConnection
• jQuery知ってればそのまま使える
• jQueryのセレクタの基本機能は大体使える
※正規表現でセレクタ指定とかは出来ない模様
• child ,parentも取れる
• id,class,Style要素とかも取れる
• 昔ながらの
getElementById,getElementByClass,getElementByTagsも使
える
Httpクライアントとしても優秀
• Jsoup内で実装されているHttpConnectionクラスが何気に
便利(っていうかJava標準ライブラリにまともなのが無い)
doc = Jsoup
.connect("http://en.wikipedia.org/")
.userAgent(
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36
“
)
.referrer("http://en.wikipedia.org/wiki/Main_Page")
.cookie(“loggedin", “true")
.timeout(3000)
.post();
userAgentがないと蹴ら
れるサイトも多い
get,postでデータ送信もできる
hashMap.put("homhom", "foo");
hashMap.put("oauth_id", "123456");
hashMap.put("oatuh_token", "kankore");
doc = Jsoup
.connect("http://en.wikipedia.org/")
.data(hashMap)
.timeout(3000)
.post();
まとめ
• jQuery知ってると凄く捗るライブラリ
• Httpクライアントとしても便利
• ってかjava.net.HttpURLConnection頑張れよ
宣伝:エンジニア募集中!
bizreach.co.jp
→採用情報から
エグゼクティブの転職サイト
の中の人
ご清聴ありがとうございました
このスライド作ってたらすげー腹減った

More Related Content

PDF
「新しい」を生み出すためのWebアプリ開発とその周辺
PDF
JavaScriptで出来る、あんなことこんなこと
PDF
jQueryを中心としたJavaScript
PDF
Scc2014 :jQueryの仕組みを完璧に理解する
PDF
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
PDF
クライアントサイドjavascript簡単紹介
PDF
Learning jQuery
PDF
Web制作勉強会 #2
「新しい」を生み出すためのWebアプリ開発とその周辺
JavaScriptで出来る、あんなことこんなこと
jQueryを中心としたJavaScript
Scc2014 :jQueryの仕組みを完璧に理解する
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
クライアントサイドjavascript簡単紹介
Learning jQuery
Web制作勉強会 #2

What's hot (20)

PPT
jsライブラリで実装する効率的なWeb制作
PDF
いまさら聞けない!?Backbone.js 超入門
PDF
JavaScriptおよびXPages Vote技術解説
PDF
Djangoのススメ
PDF
Capybaraで雑にWebスクレイピング
PDF
閉じタグを超えた先に僕が見た景色とは
PDF
Djangoによるスマホアプリバックエンドの実装
PDF
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
PDF
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
PDF
WordPressでウェブサービスを作ろう! #wbNagoya
PPTX
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
PPTX
oDeskつこーてみた
PDF
⑯jQueryをおぼえよう!その2
PDF
Anemoneによるクローラー入門
PDF
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
PDF
BACKBONE.JSによるWebアプリケーション開発について
PDF
Node.jsでサーバプログラマ デビューしよう
PPTX
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
PPTX
Bootstrap
PDF
Web frontend performance tuning
jsライブラリで実装する効率的なWeb制作
いまさら聞けない!?Backbone.js 超入門
JavaScriptおよびXPages Vote技術解説
Djangoのススメ
Capybaraで雑にWebスクレイピング
閉じタグを超えた先に僕が見た景色とは
Djangoによるスマホアプリバックエンドの実装
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
WordPressでウェブサービスを作ろう! #wbNagoya
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
oDeskつこーてみた
⑯jQueryをおぼえよう!その2
Anemoneによるクローラー入門
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
BACKBONE.JSによるWebアプリケーション開発について
Node.jsでサーバプログラマ デビューしよう
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
Bootstrap
Web frontend performance tuning
Ad

Similar to じっくりコトコト煮込んだJavaスープ (20)

PDF
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
PDF
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
PPTX
着任したエンジニアをスムーズにテイクオフさせる道具だて
PDF
DevLove四国_LT_yohhatu
PDF
MF GeeksNight pplogの話
PDF
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
PDF
NSInvocationの便利さとハマりどころ
PPTX
事業会社で働くエンジニアのマインドセット - DevLOVE関西
PDF
Dev lobe20090325v1.0
PPT
PPTX
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...
PDF
チラ見せ♡ナイト@20150410 LT公開用
PDF
オープンに活動することと現場の改善~Zabbix導入による改善物語~
PDF
とある Perl Monger の働き方
PPTX
ガチリアルな修羅チーム開発
PDF
ruby、sinatraで作るfacebookアプリ
PDF
最近のSpringFramework2013 #jjug #jsug #SpringFramework
PDF
DevOpsが引き金となるインフラエンジニアの進撃
PDF
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
PPT
Neo4j Profile Export/Import Tool
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
着任したエンジニアをスムーズにテイクオフさせる道具だて
DevLove四国_LT_yohhatu
MF GeeksNight pplogの話
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
NSInvocationの便利さとハマりどころ
事業会社で働くエンジニアのマインドセット - DevLOVE関西
Dev lobe20090325v1.0
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...
チラ見せ♡ナイト@20150410 LT公開用
オープンに活動することと現場の改善~Zabbix導入による改善物語~
とある Perl Monger の働き方
ガチリアルな修羅チーム開発
ruby、sinatraで作るfacebookアプリ
最近のSpringFramework2013 #jjug #jsug #SpringFramework
DevOpsが引き金となるインフラエンジニアの進撃
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Neo4j Profile Export/Import Tool
Ad

More from Kazuhiro Serizawa (9)

PDF
Introduction to Retrofit
PDF
Rubyはとても「人間的」
PDF
第八回 #渋谷Java 最近のjava PaaS事情
PDF
第四回 #渋谷java オープニング
PDF
Juzu Frameworkを使ってみた @第四回 渋谷java
PDF
第3回渋谷javaオープニング
PDF
第二回渋谷Java Opening #渋谷Java
PDF
PHPerがJava屋になるために乗り越えたこと
PDF
第一回Shibuya.javaオープニング
Introduction to Retrofit
Rubyはとても「人間的」
第八回 #渋谷Java 最近のjava PaaS事情
第四回 #渋谷java オープニング
Juzu Frameworkを使ってみた @第四回 渋谷java
第3回渋谷javaオープニング
第二回渋谷Java Opening #渋谷Java
PHPerがJava屋になるために乗り越えたこと
第一回Shibuya.javaオープニング

じっくりコトコト煮込んだJavaスープ