コンテンツにスキップ

Facebook投稿をスクレイピングするための完全ガイド

ソーシャル メディアには、抽出方法を知っている人にとって貴重な公開データの宝庫が含まれています。この決定的な 4000 語以上のガイドでは、適切なツールとテクニックを使用して Facebook の投稿を効率的にスクレイピングする方法を説明します。

高まる Web スクレイピングの重要性

Web スクレイピングとは、スクリプトとソフトウェア ツールを使用して Web サイトからデータを自動抽出することを指します。 Insider Intelligence によると、現在 80% 以上の組織がビジネス インテリジェンスの目的で何らかの形で Web スクレイピングを利用しています。

オンラインで公開される貴重なデータの量が飛躍的に増加し続ける中、このデータを活用するために Web スクレイピングが不可欠になっています。小売業者は商品リストを収集し、金融会社は決算報告の記録を収集し、採用担当者は求人情報を収集し、応募は延々と続きます。

Meticulous Research によると、Web スクレイピング業界は CAGR 20% 以上で成長し、13.9 年までに 2026 億ドルに達すると予測されています。 Web スクレイピングが競争力のあるビジネスにとって不可欠なものになっていることは明らかです。

多くの Web サイトは、サービス利用規約 (ToS) で Web スクレイピングを禁止しています。フェイスブックも例外ではありません。これにより、Web スクレイピングの合法性に関して疑問が生じます。

良いニュースとしては、Facebook の本拠地である米国では、複数の裁判所の判決が、公的にアクセス可能な Web サイト上のデータは抽出に適していること、および ToS での禁止事項は法的に強制力のある契約ではないことを確認したことです。

たとえば、2020 年の HiQ Labs 対 LinkedIn 判決では、第 9 巡回区控訴裁判所は、HiQ が LinkedIn の公開ページをスクレイピングする権利を支持し、次のように述べました。

「我々は、HiQ が LinkedIn の公開データにアクセスすることを禁止する強制力のある契約を両当事者が締結したかどうかについて、HiQ が重大な疑問を提起したと結論付けます。」

技術的な障壁を回避せずに、一般ユーザーと同様にパブリック インターフェイスを介してデータにアクセスする限り、米国の判例によれば、Web スクレイピングは合法であるようです。

そうは言っても、倫理も重要です。従うべきベスト プラクティスをいくつか示します。

  • 公開データのみをスクレイピングする
  • 通常の交通を妨げないでください
  • robots.txt のルールを尊重する
  • プロキシを使用してレートを制限する
  • 信用情報源
  • 不要になったらデータを削除する

Webスクレイピングに対するFacebookのスタンス

Facebook の利用規約には次のように記載されています。

当社の事前の許可なく、自動化された手段 (ボット、ロボット、スパイダー、スクレイパーの収集など) を使用して、ユーザーのコンテンツや情報を収集したり、Facebook にアクセスしたりしてはなりません。

これは、スクレイピングを妨げることを意味します。しかし、彼らの主な懸念は次のような点にあるようです。

  • プライベートユーザーデータのスクレイピング
  • プラットフォームを悪用する偽のアカウント/ボット
  • Facebookのインフラを破壊する

公開ページのコンテンツを非侵襲的な方法でスクレイピングすることは、公的な前例に基づくと問題ではないようです。多くのサードパーティ ツールとサービスは、特に Facebook スクレイピングを有効にします。

Facebookは、ボットのスクレイピングに「事前の許可」を必要とすることで、無制限のままにしている。しかし、今日では透明性のある実際的な方法で許可が積極的に与えられることはありません。

最善のアプローチは、前に概説したベスト プラクティスに従って、倫理的かつ責任を持ってスクレーピングすることです。公開ページとデータに固執すると仮定すると、適度な量をスクレイピングすることは心配する必要はありません。しかし、プラットフォームのポリシーがあいまいな場合、最終的な保証をすることは不可能です。

では、実際に Facebook の投稿をスクレイピングする方法を見てみましょう。

ヘッドレスブラウザを使用した Facebook のスクレイピング

最も簡単なアプローチは、スクリプトを介してブラウザを直接制御することです。 Puppeteer や Playwright などの最新のヘッドレス ブラウザ ライブラリは、ブラウザ機能への API アクセスを提供します。

を使用して例を見てみましょう 人形 – パワーバランスとシンプルさのため、最も人気のある選択肢の 1 つです。

まず、Puppeteer をインストールする必要があります。

npm install puppeteer  

次に、次のようなスクリプトを書くことができます。

// puppeteer-scraper.js

const puppeteer = require(‘puppeteer‘);

(async () => {

  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto(‘https://www.facebook.com/nasa/‘);

  // Wait for posts to load
  await page.waitForSelector(‘.userContentWrapper‘); 

  // Extract post data
  const posts = await page.$$eval(‘.userContentWrapper .permalinkPost‘, posts => {

    return posts.map(post => {

      return {

        text: post.querySelector(‘.userContent‘)?.textContent ?? ‘‘,  
        date: post.querySelector(‘.timestampContent‘)?.textContent ?? ‘‘,
        reactions: post.querySelector(‘.likeCount‘)?.textContent ?? ‘‘,
        comments: post.querySelector(‘.commentCount‘)?.textContent ?? ‘‘,
        shares: post.querySelector(‘.shareCount‘)?.textContent ?? ‘‘

      };

    });

  });

  console.log(posts);

  await browser.close();

})();

何が起こっているかは次のとおりです。

  1. Puppeteer を使用してヘッドレス Chrome ブラウザを起動します。

  2. NASA の Facebook ページを開きます。

  3. 最初の投稿が読み込まれるまで待ちます。

  4.   page.$$eval に一致するすべての要素を評価するには .userContentWrapper .permalinkPost セレクタ。

  5. 各投稿要素を必要なデータ (テキスト、日付、反応など) にマップするコールバック関数を提供します。

  6. 抽出された投稿配列を出力します。

このスクリプトを実行すると、スクレイピングされた各投稿のテキスト、日付、エンゲージメント データを含むオブジェクトの配列が出力されます。

スクレイピングした投稿を JSON として簡単に保存できるようになりました。

const fs = require(‘fs‘);

// ...scrape posts

fs.writeFileSync(‘nasa-posts.json‘, JSON.stringify(posts, null, 2)); 

または、各投稿を CSV ファイルの行として追加することもできます。可能性は無限大!

人形遣いと劇作家の比較

パペティアは素晴らしいけど、 劇作家 これも、いくつかの独自の利点を備えた優れたヘッドレス ブラウザ オプションです。

  • Chromium に加えて Firefox と WebKit もサポートします。
  • ページの読み込み時間がわずかに速くなります。
  • ページネーション、iframe、ポップアップの組み込みサポートが強化されました。
  • スクレイピングされたデータをプレビューするための UI。
    - よりスムーズな非同期/待機構文。

たとえば、Playwright の同じスクリプトは次のとおりです。

const { chromium } = require(‘playwright‘); 

(async () => {

  const browser = await chromium.launch();

  const context = await browser.newContext();

  const page = await context.newPage();

  await page.goto(‘https://www.facebook.com/nasa/‘);

  const posts = await page.$$eval(‘.userContentWrapper .permalinkPost‘, posts => {

    // Map elements to data  

  });

  await browser.close();

})();

Playwright の使用法はほとんど同じです。どちらのライブラリも、好みに応じて優れた選択肢となります。

次に、より効果的なスクレイピングのためのプロキシの使用を見てみましょう。

プロキシを介したスクレイピング

Facebook を大規模に効率的にスクレイピングするには、プロキシを使用してリクエストを分散し、検出を回避することを強くお勧めします。

住宅用プロキシ 通常のユーザーと同じ結果を得るために家庭/モバイルデバイスから実際の IP を提供するため、最も効果的に機能します。 データセンタープロキシ 安価ですが、検出されブロックされる可能性が高くなります。

住宅用プロキシを使用するように Puppeteer を設定する方法は次のとおりです。

const puppeteer = require(‘puppeteer-extra‘);
const pluginStealth = require(‘puppeteer-extra-plugin-stealth‘);

// Enable stealth plugin  
puppeteer.use(pluginStealth());

(async () => {

  const browser = await puppeteer.launch({
    headless: true, 
    args: [
      ‘--proxy-server=http://USER:PASS@PROXY:PORT‘ 
    ]
  });

// ...rest of script

})();

単に渡すだけです --proxy-server 引数をプロキシ プロバイダーの資格情報に置き換えます。これにより、すべてのトラフィックがプロキシ IP 経由でルーティングされます。

  puppeteer-extra-plugin-stealth モジュールは、プロキシを通過するときにボットの検出を回避するためにさまざまなテクニックを適用します。

代表的な住宅プロキシ サービスには次のものがあります。

  • Smartproxy – 75 GB のトラフィックに対して月額 40 ドルからのプラン。 APIが利用可能です。

  • GeoSurf – 月額 50 ドルからのプラン。 Puppeteer とシームレスに統合します。

  • ルミナティ – プランは月額 $500 から始まります。大規模な IP プール。

  • Oxylabs – 月額 100 ユーロからのプラン。 APIが提供されています。

住宅用プロキシの価格は 3 GB あたり 5 ~ XNUMX セントで、データセンター プロキシよりもはるかに高価ですが、本格的なスクレイピングにはそれだけの価値があります。

プロキシ IP を頻繁にローテーションして、結果を最大化し、検出を最小限に抑えます。このプロキシ管理の負担をサービス プロバイダーにオフロードします。

リアルブラウザを使用した Facebook のスクレイピング

場合によっては、サーバー側でスクレイピング スクリプトを 24 時間年中無休で実行することが理想的または現実的ではない可能性があります。

実際のブラウザからのスクレイピング 自分のコンピュータを使用することも代替手段です。これにより、小型スクレーパーの複雑さが軽減されます。

のようなツール オクトパース, パースハブ & Import.io Facebook を自然に閲覧するときにコンテンツを取得するためのブラウザ拡張機能を提供します。

たとえば、Octoparse でスクレイピングする手順は次のとおりです。

  1. ブラウザの拡張機能をインストール。

  2. 目的のページに移動します。

  3. 拡張機能アイコンをクリックします。

  4. スクレイピングする要素を選択します。

  5. データを抽出します。

ブラウザスクレイピングはセットアップが簡単ですが、プログラムによる完全な制御を可能にするスクリプトに比べて柔軟性が劣ります。ユースケースに基づいてすべてのオプションを検討してください。

ツールとAPIを使用したFacebookのスクレイピング

スクリプト以外にも、Facebook のスクレイピング専用に構築されたツールが多数あります。

スクレーパーAPI ような Dexi.io, スクレイプヒーロー & セルパピ スクレイピングを処理してくれるので、データの利用に集中できます。例えば:

import dexi 

data = dexi.FacebookPage(
  page_urls=[‘https://www.facebook.com/nasa‘]
).get_posts()

print(data)

Google スプレッドシート アドオン ような インポートFacebook & ソーシャルベアリング Facebook データを Google スプレッドシートに直接取り込み、即座に分析できます。

  Facebook API 公式のプログラムによるアクセスを提供しますが、抽出できるデータ量が制限されているため、スクレイピングに比べて非常に制限されています。

DIY ブラウザ拡張機能 ような Facebookスクレイパー コーディングなしでスクレイピングにアクセスできるようにします。

予算、技術的専門知識、使用例に基づいてオプションを評価します。

実際に Facebook からどのようなデータを収集できるのでしょうか?

投稿に焦点を当ててきましたが、実際には多くのデータ タイプを Facebook からスクレイピングできます。

  • ページのメタデータ – 名前、カテゴリー、フォロワー数など

  • 投稿 – テキストの内容、日付、反応、コメント。

  • コメント – コメントテキスト、コメント投稿者名、日付、反応。

  • レビュー – レビューのテキスト、画像、評価、レビュー者名。

  • イベント – タイトル、説明、場所、スケジュール、出席者情報。

  • グループ – グループ情報、メンバーリスト、投稿、コメント。

  • マーケットプレイスのリスト – タイトル、説明、価格、画像、販売者。

  • 広告 – 広告クリエイティブ、テキスト、画像、ターゲティング基準。

ただし、正当に必要なものだけに焦点を当ててください。個人ユーザーデータは決して収集しないでください。公開ページと投稿のみを収集してください。

責任を持って Facebook をスクレイピングする

Facebook は豊富な公開データを提供しています。ただし、責任を持って収穫する必要があります。

  • robots.txt を尊重します。 Facebook の robots.txt では、ページや投稿のスクレイピングが許可されています。ただし、遮断された道には従ってください。

  • リクエストの頻度を制限する: 100 秒あたり数百件のリクエストをページに浴びせかけないでください。合理的でありなさい。

  • プロキシを使用します。 IP をローテーションして負荷を分散します。住宅用プロキシが最適に機能します。

  • 公開データのみをスクレイピングする: 個人プロフィールや個人情報を決してターゲットにしないでください。

  • クレジットソース: スクレイピングされたコンテンツを再公開する場合は、適切にクレジットを記載してください。

  • 不要なデータを削除する: 不要になったスクレイピングされたデータを削除します。

  • 倫理に従ってください: 使用または分析することに正当な関心があるデータのみをスクレイピングしてください。

スクレイピングによって Facebook のインフラストラクチャが中断されたり、ユーザーのプライバシーが侵害されたりしてはなりません。私たちは単に抽出しているだけです 公共 Facebookがすでに公開したデータ。

Facebook のスクレイピング: 重要なポイント

  • Web スクレイピングでは、ビジネス用途のために Facebook から貴重な公開データを抽出できます。
  • 個人のプロフィールではなく、公開ページや投稿のスクレイピングに重点を置きます。
  • 責任あるスクレイピングのベストプラクティスに従ってください。
  • Puppeteer、Playwright、スクレイパー API などのツールを使用します。
  • 検出を避けるために住宅用プロキシをローテーションします。
  • 合法的に使用できるデータのみを収集してください。
  • スクレイピングされたデータが不要になったら削除します。

以上で、Facebook の投稿を効果的かつ倫理的にスクレイピングするための 4000 語以上のガイドを終わります。お役に立てば幸いです!他にご質問がある場合はお問い合わせください。

参加する

あなたのメールアドレスは公開されません。 必須フィールドは、マークされています *