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

Post on 13-Jun-2015

7.365 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

✦ プロフィール

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

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

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

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

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

‣ twitter: @dkfj

‣ Facebook: takuro.sasaki

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

@dkfj

自己紹介: 佐々木拓郎

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

宣伝!!

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

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

http://bit.ly/crawler_book

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

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

データ収集の課題

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

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

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

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

IPアドレス制限

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

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

!

データの保存方法

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

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

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

ウィキペディアより

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

AWSを三行で説明すると

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

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

コンピュータ処理 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のサービス一覧

この辺りを 使います

Amazon Elastic Compute Cloud(Amazon EC2)

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

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

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

Amazon Simple Storage Service(Amazon S3)

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

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

Amazon Simple Queue Service(Amazon SQS)

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

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

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

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

デモ

ユースケース

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

EC2を単純に並べる

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

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

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

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

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

注意点

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

巡回先サイトに配慮する

!

‣ AWSは、個人でも使える

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

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

まとめ

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

top related