ScrapingHubにScrapyスパイダーをデプロイする手順をわかりやすく解説
Scrapyスパイダーとは
Scrapyスパイダーは、Webサイト内のリンクをたどりながら各ページから情報を抽出するためのクラスです。すべてのスパイダーは、この基本クラスを継承して作成します。
Scrapinghubとは
Scrapinghubは、Scrapyスパイダーを実行するためのオープンソースアプリケーションです。Web上のコンテンツを有用なデータや情報へと変換し、複雑な構造を持つページであってもデータ抽出を可能にします。
本記事では、Scrapinghubを使ってScrapyスパイダーをクラウド上にデプロイし、実行する方法を解説します。ローカルマシンを24時間365日稼働させ続けることなく、継続的なクローリングが実現できます。
ステップ1:Scrapyプロジェクトを作成する
まずScrapyをインストールしたうえで、ターミナルで以下のコマンドを実行してプロジェクトを作成します。
$scrapy startproject <project_name>
コマンド実行後、作成されたプロジェクトディレクトリ(project_name)に移動しておきましょう。
ステップ2:対象サイト用のScrapyスパイダーを書く
次に、スクレイピング対象のWebサイト向けにスパイダーを作成します。ここでは例として、練習用サイトとしてよく使われる「quotes.toscrape.com」を想定します。
以下は非常にシンプルなScrapyスパイダーのサンプルコードです。
コード例:
#import scrapy library
import scrapy
class AllSpider(scrapy.Spider):
crawled = set()
#Spider name
name = 'all'
#starting url
start_urls = ['https://www.tutorialspoint.com/']
def __init__(self):
self.links = []
def parse(self, response):
self.links.append(response.url)
for href in response.css('a::attr(href)'):
yield response.follow(href, self.parse)
このスパイダーは、開始URLからページ内のすべてのリンク(aタグのhref属性)を取得し、それらを順番にたどりながらクローリングを続ける仕組みになっています。
ステップ3:スパイダーを実行して結果を保存する
スパイダーを実行すると、収集したすべてのリンクをlinks.jsonファイルに保存できます。単発の実行であればローカル環境でも十分ですが、24時間体制で継続的にクローリングを行いたい場合は、Scrapinghubへのデプロイが必要になります。
ステップ4:Scrapinghubアカウントを作成する
まずScrapinghubのログインページにアクセスし、GmailアカウントまたはGitHubアカウントを使ってログインします。認証が完了するとダッシュボード画面へリダイレクトされます。

ダッシュボードで「Create project」をクリックし、プロジェクト名を入力します。その後、コマンドライン(CLI)またはGitHub経由のいずれかの方法で、プロジェクトをクラウドに追加できます。
ここではshub CLIを使ってコードをデプロイする方法を紹介します。まずshubをインストールしましょう。
$pip install shub
インストール完了後、アカウント作成時に発行されたAPIキーを使ってshubにログインします(APIキーは https://app.scrapinghub.com/account/apikey で確認できます)。
$shub login
APIキーが正しければ、ログインは完了です。次に、「Code & deploy」セクションのコマンドライン欄に表示されているデプロイID(6桁の数字)を指定してデプロイを実行します。
$ shub deploy deploy_id
以上でコマンドライン側の作業は終了です。Spidersダッシュボードに戻ると、デプロイ済みのスパイダーが表示されているはずです。スパイダー名をクリックし、「Run」ボタンを押せば実行できます。

ワンクリックで実行状況を確認できるため、自前のマシンを24時間稼働させておく必要はありません。クラウド上で安定した継続クローリングを実現しましょう。
-
RubyでAWS Lambda関数を構築・テスト・デプロイする完全ガイド
ソフトウェア開発は決して簡単ではありませんが、それ以上に大変なのが保守運用です。保守にはソフトウェアのパッチ適用やサーバーの管理が含まれます。この記事では、その中でも特にサーバー管理と運用に焦点を当てて解説します。 従来、サーバーはオンプレミス環境に設置され、物理ハードウェアの購入と維持管理が必要でした。しかしクラウドコンピューティングの登場により、物理的なサーバーを所有する必要はなくなりました。2006年、AmazonがAWSを開始しEC2サービスを発表したことで、現代のクラウドコンピューティングの時代が幕を開けました。この種のサービスにより、物理サーバーの管理やハードウェアのアップグレード
-
AWS LambdaでRailsアプリを動かす方法!Lambyを使ったデプロイ手順を徹底解説
サーバーレスコンピューティングは、サーバーの管理やプロビジョニングの作業をクラウドプロバイダーにオフロードできる仕組みとして、多くのテックチームで急速に標準になりつつあります。その代表格がAWS Lambdaです。LambdaはNode.js、Java、Python、Rubyといった主要なプログラミング言語を幅広くサポートしています。しかし、言語そのものだけでなく、それらの言語で構築されたフレームワークの機能に依存するサーバーレス関数を実行したいケースもあるでしょう。 本記事では、RailsアプリケーションをAWS Lambda上で実行する方法を解説します。サーバーレスコンピューティングとAW