Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
クローラー&Webスクレイピング
with AWS Lambda
JAWS-UG アーキテクチャ専門支部 クラウドネイティブ分科会 CDP議論会 #7
佐々木拓郎
2016/03/25
自己紹介
佐々木 拓郎
• AWSとモバイル
• http://blog.takuros.net/
• http://www.slideshare.net/
takurosasaki/
• twitter: @dkfj
AWSの一番分厚い本
(大容量480P)
http://amzn.to/1BLiYcO
Rubyのクローラー本
何故か人気の本 by 編集者
http://amzn.to/1lsJ5id
クローラー&スクレピング
•Webスクレピング
✓特定のページから情報を抜き出す行為のこと
✓HTMLのDOM解析派と正規表現によるパターンマッチング派がいる
•クローラー
✓Webを巡回して文章や画像を定期的に取得する行為
✓巡回・抽出(スク...
3種類のページタイプ
•ステートレスなページ(状態を持たない)
✓いわゆる静的ページに多い
✓一番簡単にデータをスクレイプできる
•ステートフルなページ(状態を持つページ)
✓ログイン状態やPOSTなど前画面の情報を前提とするタイプ
✓サーバサ...
ステートレスなページ
スクレイピング
プログラム
Webサイト
スクレイピングのライブラリ選定だけがポイント
html
url
ステートフルなページ
スクレイピング
プログラム
Webサイト
• 対話型のライブラリが必要な場合がある
• ブラウザは不要
• ログイン状態の有無は、Cookieのみで対処可能なケースも
パラメータ
遷移
html
JavaScriptによる動的ページ
スクレイピング
プログラム
Webサイト
• ブラウザが必要。ほぼヘッドレスブラウザを使う
• PhantomJS&CasperJS
  (JavaScript APIで操作できるWebKitブラウザ)
•...
クローラー/スクレイプのライブラリ
JavaScript Python Ruby
構文解析&抽出 cheerio-httpcli BeautifulSoup nokogiri
巡回&保存 ??? Scrapy anemone
Webページ操作 ...
クローラー実行基盤としての
Lambada
•理想的な環境
✓グローバルIPありでプログラムを実行できる
✓スクレイピングだけであれば、文句なし
✓発火イベントが充実しているので、収集と解析を分離しやすい
•注意点
✓処理時間限界(5分)がある...
スクレイプの
アーキテクチャ例
②HTTP
リクエスト
③HTTP
レスポンス
④html
保存
⑤S3 Event
Call
⑥S3
get Object
⑦スクレイプ
⑧結果①キック
サービス監視
生死監視用のページを作成すべき
• apache/nginxでレスポンスするページ
• apache/nginx+APPサーバでレスポンスするページ
• apache/nginx+APPサーバ+DBでレスポンスするページ
Web
...
手抜きスクレイピング
json
Webサイト
サービス(import.io)併用
http
リクエスト
スクレイプ
参考情報
•Lambdaで作るクローラー/スクレイピング
✓http://blog.takuros.net/entry/2014/12/14/053606
•AWS Lambda+PhantomJS/CasperJSでスクレイピング
✓http...
AWSの鈍器のような本
(640ページ!?)
4/11発売開始!!
絶賛、予約受付中!!
http://amzn.to/1R4yyLy
Upcoming SlideShare
Loading in …5
×

JAWSUG architecture-crowler

5,121 views

Published on

Lambdaで作るクローラー&Webスクレイピング
アーキテクチャ面から

Published in: Internet
  • Be the first to comment

JAWSUG architecture-crowler

  1. 1. クローラー&Webスクレイピング with AWS Lambda JAWS-UG アーキテクチャ専門支部 クラウドネイティブ分科会 CDP議論会 #7 佐々木拓郎 2016/03/25
  2. 2. 自己紹介 佐々木 拓郎 • AWSとモバイル • http://blog.takuros.net/ • http://www.slideshare.net/ takurosasaki/ • twitter: @dkfj
  3. 3. AWSの一番分厚い本 (大容量480P) http://amzn.to/1BLiYcO
  4. 4. Rubyのクローラー本 何故か人気の本 by 編集者 http://amzn.to/1lsJ5id
  5. 5. クローラー&スクレピング •Webスクレピング ✓特定のページから情報を抜き出す行為のこと ✓HTMLのDOM解析派と正規表現によるパターンマッチング派がいる •クローラー ✓Webを巡回して文章や画像を定期的に取得する行為 ✓巡回・抽出(スクレイピング)・保存の機能がある
  6. 6. 3種類のページタイプ •ステートレスなページ(状態を持たない) ✓いわゆる静的ページに多い ✓一番簡単にデータをスクレイプできる •ステートフルなページ(状態を持つページ) ✓ログイン状態やPOSTなど前画面の情報を前提とするタイプ ✓サーバサイドで動的に生成されるページの多くがこのタイプ •JavaScriptで動的に構築されるページ ✓JavaScriptを元にクライアント側でページを構築される ✓ステートレス/ステートフル、どちらのタイプもある
  7. 7. ステートレスなページ スクレイピング プログラム Webサイト スクレイピングのライブラリ選定だけがポイント html url
  8. 8. ステートフルなページ スクレイピング プログラム Webサイト • 対話型のライブラリが必要な場合がある • ブラウザは不要 • ログイン状態の有無は、Cookieのみで対処可能なケースも パラメータ 遷移 html
  9. 9. JavaScriptによる動的ページ スクレイピング プログラム Webサイト • ブラウザが必要。ほぼヘッドレスブラウザを使う • PhantomJS&CasperJS   (JavaScript APIで操作できるWebKitブラウザ) • JavaScriptを解析して、データ部分を探すという手もある ヘッドレス ブラウザ リクエスト html リクエスト レスポンス
  10. 10. クローラー/スクレイプのライブラリ JavaScript Python Ruby 構文解析&抽出 cheerio-httpcli BeautifulSoup nokogiri 巡回&保存 ??? Scrapy anemone Webページ操作 mechanize-js? mechanize? Mechanize ヘッドレス ブラウザ PhantoJS +CasperJA Splinter? Capybara (Selenium +PhantomJS)
  11. 11. クローラー実行基盤としての Lambada •理想的な環境 ✓グローバルIPありでプログラムを実行できる ✓スクレイピングだけであれば、文句なし ✓発火イベントが充実しているので、収集と解析を分離しやすい •注意点 ✓処理時間限界(5分)があるので、クローラーの構造を考える必要あり ✓複数グローバルIPの取得を任意では出来ない
  12. 12. スクレイプの アーキテクチャ例 ②HTTP リクエスト ③HTTP レスポンス ④html 保存 ⑤S3 Event Call ⑥S3 get Object ⑦スクレイプ ⑧結果①キック
  13. 13. サービス監視 生死監視用のページを作成すべき • apache/nginxでレスポンスするページ • apache/nginx+APPサーバでレスポンスするページ • apache/nginx+APPサーバ+DBでレスポンスするページ Web 層 HTTP O.K. アプリ 層 DB 層 アプリ O.K. DB O.K.
  14. 14. 手抜きスクレイピング json Webサイト サービス(import.io)併用 http リクエスト スクレイプ
  15. 15. 参考情報 •Lambdaで作るクローラー/スクレイピング ✓http://blog.takuros.net/entry/2014/12/14/053606 •AWS Lambda+PhantomJS/CasperJSでスクレイピング ✓http://blog.takuros.net/entry/2015/12/01/074444
  16. 16. AWSの鈍器のような本 (640ページ!?) 4/11発売開始!! 絶賛、予約受付中!! http://amzn.to/1R4yyLy

×