SlideShare a Scribd company logo
スクレイピングは
避けられない!!
@Daikids2
vsLT with Cookpad
自己紹介
所属 : 京都大学工学部情報学科
情報システム分野
来年から :
京都大学大学院情報学研究科
システム科学専攻
応用情報学講座(スパコン)
自己紹介
好きな言語 :
Python
Ruby (on Rails)
Node.js
Kotlin
Lisp(最近やり直してる…)
C++ (BoostいいよBoost)
NodeFes2017
ところで…
こんなことは
ありませんか?
Web APIがないわ!!
それに欲しい情報が
JSONとかでGET
できない!!
機械学習の勉強
したいけど
データがない!!
こんなことは
ありませんか?
そうだ
スクレイピングを
しよう!!
スクレイピングを
すると…
Web(HTML)から情報を取り出す手法
API, CSVデータが落ちてない時に有
効!!
どちらの本も
Amazonに
あります!!
スクレイピングの
例
どこかのトップページから,
関連記事のURLを取得する
ページ内の画像を全て保存
テーブルからデータを取得
なぜできるの?
あくまで, HTMLのタグの情報をとってる
だけ!!
文章を解析してくれるわけではない
このようなものだと, srcタグからurlが取
れる!!
<src url = ”photo.png”/>
道具の話
ライブラリは多数あり!!
Python : Beautiful Soup,
Scrapy(これがすごい!!)
Ruby : Nokogiri…
Node : cheerio-httpcli, osmosis
Java, Kotlin : Jsoup
実際にやってみた
やったこと1
LINE BOTの作成
(NodeFesのハンズオン)
Nodeの最新版 and 安定版,
Yahooの記事一覧を表示
使用ライブラリ:
Node.js : v8.9.1
Library : {
"express": "4.16.2",
"osmosis": "1.1.4”
}
やったこと1
やったこと2
 CONNPASSのapiを使ったAndroidアプリ
 勉強会のurlからhtmlをGET
 Htmlを解析に回して画像を表示
具体的には
 10件の勉強会情報をGET
 それぞれに対して
 帰ってきたapiにある, urlを取得
 urlを叩いてhtmlをget
 Htmlから画像のurlを取得
 Picassoを使って画像urlから画像を表示
API URL HTML src tag
こんな感じに
なりました!!
問題点
重い!!
実際には20秒!!
10件のHttpアクセス
Htmlの解析を10回
ちなみに…
Httpアクセスを0にすると
数秒で完了します…
スクレイピングは案外重い!! サーバーにやらせましょう…
スクレイピングの
問題点
 サイトのポリシーに気をつけよう!!
 APIのあるものはそれを使うべき!!
 自重しよう!!
 簡単にサーバーに負荷をかけられま
す!!
 Scrapyだと, 負荷が軽減できます!!
 機械学習のデータについて
 日本の法律上, 学習用のデータなら
OK!!
Fair Play
Fair Scraping
ルールとマナーを守って
楽しくスクレイピングしよう!!

More Related Content

What's hot

CouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoCouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
Yohei Sasaki
 
JavaScriptによる記号プログラミング
JavaScriptによる記号プログラミングJavaScriptによる記号プログラミング
JavaScriptによる記号プログラミング
sters
 
InnoDBだってシュッと全文検索したい!
InnoDBだってシュッと全文検索したい!InnoDBだってシュッと全文検索したい!
InnoDBだってシュッと全文検索したい!
Rikito Taniguchi
 
OSS-DB 取得のススメ
OSS-DB 取得のススメOSS-DB 取得のススメ
OSS-DB 取得のススメ
豊明 尾古
 
Go + WS (仮) psoをws使ってやってみる- @spdy+ws勉強会
Go + WS (仮)  psoをws使ってやってみる- @spdy+ws勉強会Go + WS (仮)  psoをws使ってやってみる- @spdy+ws勉強会
Go + WS (仮) psoをws使ってやってみる- @spdy+ws勉強会Takuya Ueda
 
JSONB型でpostgresをNoSQLっぽく使う
JSONB型でpostgresをNoSQLっぽく使うJSONB型でpostgresをNoSQLっぽく使う
JSONB型でpostgresをNoSQLっぽく使う
Yuki Takeichi
 

What's hot (6)

CouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoCouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
 
JavaScriptによる記号プログラミング
JavaScriptによる記号プログラミングJavaScriptによる記号プログラミング
JavaScriptによる記号プログラミング
 
InnoDBだってシュッと全文検索したい!
InnoDBだってシュッと全文検索したい!InnoDBだってシュッと全文検索したい!
InnoDBだってシュッと全文検索したい!
 
OSS-DB 取得のススメ
OSS-DB 取得のススメOSS-DB 取得のススメ
OSS-DB 取得のススメ
 
Go + WS (仮) psoをws使ってやってみる- @spdy+ws勉強会
Go + WS (仮)  psoをws使ってやってみる- @spdy+ws勉強会Go + WS (仮)  psoをws使ってやってみる- @spdy+ws勉強会
Go + WS (仮) psoをws使ってやってみる- @spdy+ws勉強会
 
JSONB型でpostgresをNoSQLっぽく使う
JSONB型でpostgresをNoSQLっぽく使うJSONB型でpostgresをNoSQLっぽく使う
JSONB型でpostgresをNoSQLっぽく使う
 

Similar to スクレイピングは避けられない

オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
 
S09 t4 wrapup
S09 t4 wrapupS09 t4 wrapup
S09 t4 wrapup
Takeshi Akutsu
 
コロナ禍の所蔵品検索システム
コロナ禍の所蔵品検索システムコロナ禍の所蔵品検索システム
コロナ禍の所蔵品検索システム
Naosuke Okamoto
 
20190202 powerbi scraping
20190202 powerbi scraping20190202 powerbi scraping
20190202 powerbi scraping
良一 駒板
 
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩
Satoshi Yamada
 
ML system design_pattern
ML system design_patternML system design_pattern
ML system design_pattern
yusuke shibui
 
Linked Open Data(LOD)の基本的な使い方
Linked Open Data(LOD)の基本的な使い方Linked Open Data(LOD)の基本的な使い方
Linked Open Data(LOD)の基本的な使い方
Kouji Kozaki
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキル
Satoshi Yamada
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
KnowledgeGraph
 
俺と Amazon Elasticsearch Service とスポットインスタンス
俺と Amazon Elasticsearch Service とスポットインスタンス俺と Amazon Elasticsearch Service とスポットインスタンス
俺と Amazon Elasticsearch Service とスポットインスタンス
Masayuki KaToH
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
Tomoki Hasegawa
 
BLEラジコン基板でIoTしてみた
BLEラジコン基板でIoTしてみたBLEラジコン基板でIoTしてみた
BLEラジコン基板でIoTしてみた
Bizan Nishimura
 
Foss4g Hokkaido 2019
Foss4g Hokkaido 2019Foss4g Hokkaido 2019
Foss4g Hokkaido 2019
Takahiro Endo
 
位置データもPythonで!!!
位置データもPythonで!!!位置データもPythonで!!!
位置データもPythonで!!!
hide ogawa
 
基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025
義広 河野
 
利益はデータベースの中にあった!
利益はデータベースの中にあった!利益はデータベースの中にあった!
利益はデータベースの中にあった!
infinite_loop
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Drecom Co., Ltd.
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
 
160608 01
160608 01160608 01
160608 01
openrtm
 

Similar to スクレイピングは避けられない (20)

オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 
S09 t4 wrapup
S09 t4 wrapupS09 t4 wrapup
S09 t4 wrapup
 
コロナ禍の所蔵品検索システム
コロナ禍の所蔵品検索システムコロナ禍の所蔵品検索システム
コロナ禍の所蔵品検索システム
 
20190202 powerbi scraping
20190202 powerbi scraping20190202 powerbi scraping
20190202 powerbi scraping
 
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩
 
ML system design_pattern
ML system design_patternML system design_pattern
ML system design_pattern
 
Linked Open Data(LOD)の基本的な使い方
Linked Open Data(LOD)の基本的な使い方Linked Open Data(LOD)の基本的な使い方
Linked Open Data(LOD)の基本的な使い方
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキル
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
 
俺と Amazon Elasticsearch Service とスポットインスタンス
俺と Amazon Elasticsearch Service とスポットインスタンス俺と Amazon Elasticsearch Service とスポットインスタンス
俺と Amazon Elasticsearch Service とスポットインスタンス
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
 
BLEラジコン基板でIoTしてみた
BLEラジコン基板でIoTしてみたBLEラジコン基板でIoTしてみた
BLEラジコン基板でIoTしてみた
 
Foss4g Hokkaido 2019
Foss4g Hokkaido 2019Foss4g Hokkaido 2019
Foss4g Hokkaido 2019
 
位置データもPythonで!!!
位置データもPythonで!!!位置データもPythonで!!!
位置データもPythonで!!!
 
基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025基礎演習V 河野ゼミ紹介20161025
基礎演習V 河野ゼミ紹介20161025
 
利益はデータベースの中にあった!
利益はデータベースの中にあった!利益はデータベースの中にあった!
利益はデータベースの中にあった!
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
160608 01
160608 01160608 01
160608 01
 

スクレイピングは避けられない