scraping withawsawsを利用してスクレイピングの悩みを解決するチップス

26
第3回Webスクレイピング勉強会@東京 AWSを利用して スクレイピングの悩みを 解決するチップス 2014年10月26日 @dkfj 佐々木拓郎

Upload: takuro-sasaki

Post on 13-Jun-2015

7.365 views

Category:

Internet


0 download

DESCRIPTION

AWSを利用してスクレイピングの悩みを解決するチップス クローラー/スクレイピングにAWSを利用しようという話

TRANSCRIPT

Page 1: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

第3回Webスクレイピング勉強会@東京 !

AWSを利用して スクレイピングの悩みを 解決するチップス

2014年10月26日 @dkfj 佐々木拓郎

Page 2: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

✦ プロフィール

‣ Webシステムを得意とするSIerで勤務

‣ 最近の仕事はAWS事業の推進・モバイルアプリ開発

‣ Webスクレイピングして、データマイニングするのが趣味

★ ソーシャル・ネットワーク

‣ blog: http://blog.takuros.net/

‣ twitter: @dkfj

‣ Facebook: takuro.sasaki

‣ SlideShare: http://www.slideshare.net/takurosasaki/

@dkfj

自己紹介: 佐々木拓郎

Page 3: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

主にJAWSUG大阪で活動していました (AWS勉強会)

Page 4: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

宣伝!!

クローラー/スクレイピング本を書きました。 「Rubyによるクローラー開発技法」

ご大層な名前ですが、初中級者向けです。

http://bit.ly/crawler_book

Page 5: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

予想に反して、売上げ好調です。発売2ヶ月経過で、増刷2回。 Amazonの幾つかのカテゴリで、 ランキング1位継続中。

Page 6: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

大量のデータを集める際に、 困ることベスト3

Page 7: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

データ収集の課題

• クローリング(巡回)に時間が掛かる • IPアドレス制限 • データの保存方法

Page 8: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

クローリング(巡回)に時間がかかる

• 収集先が膨大  (対象サイト数×ページ数。何百~何千万件というケースも)

• 収集するデータが大きい  (画像系であれば、その傾向が顕著)

Page 9: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

IPアドレス制限

• 単位時間あたりで規定の回数を超えるとブロックされる  (1分間あたり200回など。最近は、リスト型アカウントハッキングの影響で厳しめに)

• IPアドレスをトリガーにされる場合が多い  (Google BAN)

!

Page 10: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

データの保存方法

• 収集してきたデータを長期間に渡って保存するのは難しい • データ量、端末の変更、整理  (容量の問題、端末を入れ替えた際にデータ紛失)

Page 11: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

AWSを使うと、解決できるよ

Page 12: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

 Amazon Web Services(AWS)とは、Amazon.com により提供される各種遠隔コンピューティングサービス(ウェブサービス)である。  2006年7月に公開され、Amazon Web Services は他のウェブサイトやクライアントサイドアプリケーションに対しオンラインサービスを提供している。これらのサービスの多くはエンドユーザに直接公開されているものではなく、他の開発者が使用可能な機能を提供するものである。  Amazon Web Services の各種サービスはHTTPを通じ、REST および SOAP プロトコルを使用してアクセスされる。費用は実際の使用量に応じて決定される。

ウィキペディアより

ちょっと理解できない。。。

Page 13: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

AWSを三行で説明すると

• Amazonが提供するクラウドサービス • 仮想コンピュータ(EC2)とストレージサービス(S3)を中心に、数十のサービスを提供

• 基本的には従量課金なので、使った分だけの支払い

Page 14: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

コンピュータ処理 Amazon EC2

ストレージ Amazon S3, Glaicer Amazon EBS

データベース Amazon RDS, DynamoDB Amazon Simple DB Elasticache, Redshift

コンテンツ配信 Amazon CloudFront

メッセージ Amazon SNS Amazon SQS

分散処理 Elastic

MapReduce

メール配信 Amazon SES

ワークホース Amazon

Mechanical Turk

認証&請求 AWS IAM

Identity Federation Consolidated Billing

モニタリング Amazon

CloudWatch

スケーリング Auto Scale

ネットワーク&ルーティング Amazon VPC ELB, Route53

AWS DirectConnect

ライブラリ&SDKs Java, PHP, .NET, Python, Ruby

Webインターフェース Management Console

IDEプラグイン Eclipse,

Visual Studio

デプロイと自動化 Elastic Beanstalk CloudFormation OpsWorks

AWSのサービス一覧

この辺りを 使います

Page 15: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

Amazon Elastic Compute Cloud(Amazon EC2)

仮想コンピュータサービス• AWSの中核サービス • インスタンスサイズごとに価格設定。1時間単位の課金

• パブリックIPが自動的に付与。  (一定の条件あり)

• 1時間あたり、$0.013(≒1.4円)から  スポットインスタンスを利用すれば、$0.0031(≒0.3円)

Page 16: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

Amazon Simple Storage Service(Amazon S3)

オンラインストレージ・サービス

• AWSのもう1つの中核サービス • 月々$0.0300 /GB。 • 1TB保存で、3000円強。 • 容量無制限。(お金があれば) • 他にもAPIリクエスト料も必要。 • 99.999999999%の堅牢性

Page 17: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

Amazon Simple Queue Service(Amazon SQS)

プル型のキュー・サービス• 最古のAWSサービス  (2004年サービス開始)

• 疎結合アーキテクチャの肝  (サービス間連携に大活躍)

• 低コスト  (月間無料枠&非常に低価格な従量課金制)

参照:Amazon Simple Queue Service(SQS)の使い方 http://d.hatena.ne.jp/dkfj/20130205/1360076804

Page 18: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

デモ

Page 19: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

ユースケース

Page 20: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

• 複数のリソース、IPアドレスを同時に利用できる • 1台×10時間でも、10台×1時間でも料金は同じ !

EC2を単純に並べる

AWSでスポットインスタンスの活用 $0.0031×50台≒約16円

Page 21: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

• EC2が集めたデータを、S3に保存する • 集計結果をデータベースに保存するのもあり

EC2の処理結果をS3に集約する

Page 22: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

• 複数台のEC2をコントロールするのは、面倒くさい • EC2内のプログラムは、SQSから指令を受けるよう作る • キューをコントロールすることで、EC2を操作できる

SQSを利用して、ジョブ制御

Page 23: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

注意点

Page 24: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

• 1秒ルール • 同一サイトを対象にする場合は、多重度をあげない • Robots.txtの尊重 • 動的サイトの場合は、特に注意  (動的サイトで中小システムであれば、秒あたりの処理件数は20~30件くらい)

巡回先サイトに配慮する

Page 25: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

!

‣ AWSは、個人でも使える

‣ クローラー作成/スクレイピングとの相性よし

‣ 取得先サイトに迷惑をかけないように

まとめ

Page 26: Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス

ご清聴ありがとうございました 後日の質問は、@dkfjまで