SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
じっくり
コトコト
煮込んだ
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>
このサンプルでパースする対象の
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
→採用情報から
エグゼクティブの転職サイト
の中の人
ご清聴ありがとうございました
このスライド作ってたらすげー腹減った

Weitere ähnliche Inhalte

Was ist angesagt?

WordPressでウェブサービスを作ろう! #wbNagoya
WordPressでウェブサービスを作ろう! #wbNagoyaWordPressでウェブサービスを作ろう! #wbNagoya
WordPressでウェブサービスを作ろう! #wbNagoya
Shinichi Nishikawa
 

Was ist angesagt? (20)

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

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

DevLove四国_LT_yohhatu
DevLove四国_LT_yohhatuDevLove四国_LT_yohhatu
DevLove四国_LT_yohhatu
Yoh Nakamura
 
Dev lobe20090325v1.0
Dev lobe20090325v1.0Dev lobe20090325v1.0
Dev lobe20090325v1.0
walnut210
 
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
Teruo Adachi
 
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみたJavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
 

Ähnlich wie じっくりコトコト煮込んだJavaスープ (20)

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

Mehr von Kazuhiro Serizawa

Mehr von Kazuhiro Serizawa (9)

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

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