元記事:https://www.octoparse.jp/blog/web-scraping-using-python-vs-web-scraping-tool/
Webスクレイピングは、Webサイトからデータを収集するために広く使用される手法になりました。人々は、Webスクレイピングを行うためにさまざまな方法を利用しています。一般的に、これらはコーディングとツール導入の2派に分かれています。この記事では、これら2つの方法を使用してTwitterをスクレイピングしてみます。
#PythonでTwitterをスクレイピングする
PythonでTwitterをスクレイピングするには、まずこのリンクからTwitter APIの利用申請が必要となります。APIを申請すると、API key、API secret key、Access token、Access token secretの4行のコードを取得できます。
APIの準備ができたので、Twitterクローラーを作成し始めます。クローラーを構築するには、jsonとtweepyの2つのライブラリを使います。JSONとは、構造化されたデータを表現するための記法です。Tweepyは、Twitter APIにアクセスするためのパッケージです。
Streamは、ツイートの実行と抽出に役立ちます。OAuthHandlerは、キーとトークンをTwitterに送信するのに役立ちます。StreamListenerは、各ツイートから必要なフィールドを変更するのに役立ちます。
次に、取得したTwitterで発行したキーとトークンを入れます。
ここでは、StreamListenerを継承するクラスを作成して、Twitterから取得するフィールドの種類を変更します。 ツイート、位置、ユーザー名、ユーザーID、フォロワー数、いいね、タイムゾーンなどの情報を収集できます。ツイート、ユーザー名、タイムゾーンなどの一部の情報には、他の言語の単語で表示する可能性があります。したがって、デフォルトのUnicode文字コードではなく、UTF-8などの別の文字コードの使用を検討する必要があります。
それから、OAuthHandlerを使用して、前回同様、キーとトークンを入れます。
それで、keywordsにます。ここでは「Big data」に関連するすべてのツイートを検索し、Streamで抽出を開始します。
各行のデータは、1つのツイートからの情報です。異なるフィールドは、2つのセミコロン「;」で区切られています。最初のフィールドはユーザー名、2番目のフィールドは位置、最後のフィールドはツイートです。データをスプレッドシートに書き込み、区切り文字を「;;」に設定してフィールドを区切ることができます。または、pandas、numpy、reなどの他のライブラリを適用して、データをさらに処理することもできます。
#OctoparseでTwitterをスクレイピングする
Pythonでのスクレイピングとは異なり、APIの申請から始める必要はありません。検索キーワードをOctoparseに入力するだけで済みます。Octoparseのソフトには数十種類のあらかじめ作成されたテンプレートがあり、パラメータ(WebサイトのURL、検索キーワードなど)を入力するだけで、データが抽出されてきます。
1.ホーム画面から「タスクテンプレート」の下にある「 +タスク」を選択します。
2.Twitterのテンプレートを選択し、「今すぐ使う」をクリックします。
3.検索キーワードを入力し、テンプレートを保存して実行します。
#まとめ
上記のデモに基づいて、PythonによるコーディングとOctoparseのようなツールの長所と短所をまとめます。
##1.学習コスト
Octoparseより、Pythonのほうは学習コストが明らかに高いです。Pythonでクローラーを構築するには、さまざまなライブラリとコーディング手法に精通しているだけでなく、Web構造を十分に理解し、スクレイピング防止手法を認識する必要があります。その一方、Octoparseでは、開発者はすでにそれらの状況を考慮しており、ユーザーは数回クリックするだけですべてのデータを抽出できます。
##2.迅速な構築
上記のデモから見ると、どちらの方法も簡単で使いやすいようです。ただし、最も時間のかかるプロセスはクローラーの構築ではなく、Webサイトへの初期分析です。異なるWebサイトは、異なる開発方法とスクレイピング防止技術を適用します。コーディングしてデータを取得することを選択した場合、Webサイトを分析するためにより多くの時間が必要になります。その一方、Octoparseの場合、Webサイトを分析しなくてもデータを簡単に入手できます。
##3.柔軟性
PythonはOctoparseよりも優れた柔軟性を備えています。一部のコードを変更するだけで、クローラーの動作を操作できます。また、いくつかの強力なライブラリまたはAPIをインポートして、数行のコードでデータを取得することもできます。CaptchaやreCaptchaなど、最も難しいアンチスクレイピングテクニックの一部でさえ、Pythonを使用した深層学習方法で解決できる可能性があります。
正直に言うと、PythonとOctoparseにはそれぞれ長所があります。Octoparseはコーディングスキルのない人に適していますが、Pythonは専門家に大きな柔軟性を提供できます。自身の状況によって適切な方法を選びましょう。