Python
 Computer >> コンピューター >  >> プログラミング >> Python

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アカウントを使ってログインします。認証が完了するとダッシュボード画面へリダイレクトされます。

ScrapingHubにScrapyスパイダーをデプロイする手順をわかりやすく解説

ダッシュボードで「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」ボタンを押せば実行できます。

ScrapingHubにScrapyスパイダーをデプロイする手順をわかりやすく解説

ワンクリックで実行状況を確認できるため、自前のマシンを24時間稼働させておく必要はありません。クラウド上で安定した継続クローリングを実現しましょう。

  1. RubyでAWS Lambda関数を構築・テスト・デプロイする完全ガイド

    ソフトウェア開発は決して簡単ではありませんが、それ以上に大変なのが保守運用です。保守にはソフトウェアのパッチ適用やサーバーの管理が含まれます。この記事では、その中でも特にサーバー管理と運用に焦点を当てて解説します。 従来、サーバーはオンプレミス環境に設置され、物理ハードウェアの購入と維持管理が必要でした。しかしクラウドコンピューティングの登場により、物理的なサーバーを所有する必要はなくなりました。2006年、AmazonがAWSを開始しEC2サービスを発表したことで、現代のクラウドコンピューティングの時代が幕を開けました。この種のサービスにより、物理サーバーの管理やハードウェアのアップグレード

  2. AWS LambdaでRailsアプリを動かす方法!Lambyを使ったデプロイ手順を徹底解説

    サーバーレスコンピューティングは、サーバーの管理やプロビジョニングの作業をクラウドプロバイダーにオフロードできる仕組みとして、多くのテックチームで急速に標準になりつつあります。その代表格がAWS Lambdaです。LambdaはNode.js、Java、Python、Rubyといった主要なプログラミング言語を幅広くサポートしています。しかし、言語そのものだけでなく、それらの言語で構築されたフレームワークの機能に依存するサーバーレス関数を実行したいケースもあるでしょう。 本記事では、RailsアプリケーションをAWS Lambda上で実行する方法を解説します。サーバーレスコンピューティングとAW