🥳Scrapeless Communityに参加して、強力なWebスクレイピングツールキットにアクセスするために無料トライアルを取得してください!
ブログに戻ります

Google News APIとNode.jsを使ったスクレイピング方法

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

07-Mar-2025

news.google.comは、ニュース記事を見つけるのに最適な場所と言えるでしょう!Googleニュースは、リアルタイムで検証されたニュースのコレクションであり、インターネットユーザーにとって最も信頼され、人気のあるプラットフォームの1つです。

そのため、Googleニュースのスクレイピングは、データ分析、調査、または単にニュースを読むために、最新のニュース記事、トレンドトピック、および関連メタデータの収集に使用できます。さらに一歩進めたい場合は、Googleニュースのスクレイピングを使用して、リアルタイムのウェブスクレイピングを通じて独自のパーソナライズされたニュースアプリケーションを構築することもできます。

このブログ記事では、Node.JSとGoogleニュースAPIを使用してGoogleニュースから関連データを収集する方法について説明します。

なぜGoogleニュースの結果をスクレイピングする必要があるのか?

業界に関わらず、Googleニュースからのデータスクレイピングは、組織の開発を大いに促進できます。

旅行やホスピタリティ業界の企業を例に考えてみましょう。旅行戦略、安全対策、観光トレンドに関する情報を収集することで、企業は稼働率の変化を予測し、それに応じて対策を計画することができます。また、この情報を使用してマーケティング戦略を調整し、効果を高め、新規顧客を獲得することもできます。

一方、投資会社は、金融ニュースを使用して、市場動向、規制変更、経済予測に関するデータ収集を行うことができます。このデータの適切な使用は、リスク管理をより効果的に行い、顧客により正確なアドバイスを提供するのに役立ちます。これにより、ポートフォリオのパフォーマンスと顧客満足度を向上させることができます。

Googleニューススクレイパーが収集するデータ

Google News

📰 記事メタデータ

  • 見出し: ニュース記事のタイトル。
  • ソース: 出版社またはニュースメディア(例:BBC、CNN)。
  • 公開日: 記事が公開された日時。
  • 著者: ジャーナリストまたは寄稿者の名前。
  • 要約/スニペット: 記事からの簡単な説明または抜粋。
  • URL: 完全な記事へのリンク。

✍️ コンテンツデータ

  • 本文: ニュース記事の本文(ソースウェブサイトへのアクセスが必要です)。
  • 画像/メディア: 記事に埋め込まれた画像、ビデオ、その他のメディア。
  • キーワード/トピック: 記事に関連付けられたタグまたはカテゴリ(例:「政治」、「テクノロジー」)。

📊 トレンドと人気データ

  • トレンドトピック: Googleニュースで現在人気のあるトピックまたはストーリー。
  • トップストーリー: 特定のカテゴリまたは地域の上位ニュースとして強調表示された記事。
  • 検索トレンド: ニューストピックに関連する人気の検索用語。

🧭 地理的および人口統計データ

  • 地域ベースのニュース: 特定の地域または国に合わせて調整されたニュース記事。
  • 言語: 記事が書かれている言語。

🧐 分析と洞察

  • 感情分析: 記事のトーンまたは感情(肯定的、否定的、中立的)。
  • トピッククラスタリング: 類似のテーマまたは主題による記事のグループ化。
  • 時系列分析: ニュースストーリーが時間の経過とともにどのように進化するかを追跡します。

Node.jsを使用したGoogleニューススクレイパーの構築 | 手順

環境の準備

Nodeプロジェクトに次のライブラリをインポートする必要があります。

JavaScript Copy
const axios = require('axios');
const fs = require('fs');

次に、Googleニュースから結果を取得する関数を作成しましょう。

JavaScript Copy
async function getNewsData() {
  const headers = {
    "User-Agent":
      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36",
  };

  try {
    const response = await axios.get(
      "https://news.google.com/home?hl=en-US&gl=US",
      { headers }
    );
    const html = response.data;
  } catch (error) {
    console.error("Error:", error.message);
  }
}

ここで、ヘッダーのUser-Agentを設定します。これにより、自然にGoogleにアクセスできます。次に、requestライブラリを使用してリクエストを行います。

次に、返されたデータから必要なデータを見つける必要があります。

Scrape Google News

クエリを検索すると、各結果またはニュースがページ上に存在することがわかります。そのため、正規表現を使用して必要なデータに一致させ、処理する必要があります。

JavaScript Copy
const regex = /data:(\[.*?\]), sideChannel/s;
const match = html.match(regex);

Googleニュースデータのスクレイピング

抽出されたデータグループ内の具体的な情報は、配列の形式で格納されています。この時点で、ページ上の具体的な情報と比較し、具体的なデータに対応する添え字を絞り込む必要があります。

JavaScript Copy
let resp = [];
const data = JSON.parse(match[1]);
for (const section of data[1][3][1]) {
    if (Array.isArray(section[0])) {
        for (const item of section[0]) {
            const utcTime = new Date(item[4][0] * 1000).toISOString();
            console.log(utcTime)
            resp.push({
                title: item[2],
                source: {
                    name: item[10][2],
                    icon: item[10][22]?.[0] || null,
                    authors: item[item.length - 1]?.[0] || []
                },
                link: item[38],
                thumbnail: item[8]?.[0]?.[13] || null,
                thumbnail_small: item[8]?.[0]?.[0] || null,
                date: utcTime
            });
            break;
        }
    }
}

最後に、必要なデータをすべて抽出しました。

完全なコード

JavaScript Copy
const axios = require('axios');
const fs = require('fs');

async function getNewsData() {
    const headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"
    };

    try {
        const response = await axios.get("https://news.google.com/home?hl=en-US&gl=US", { headers });
        const html = response.data;

        const regex = /data:(\[.*?\]), sideChannel/s;
        const match = html.match(regex);
        if (!match || !match[0]) {
            throw new Error('No valid JSON data found');
        }
        let resp = [];
        const data = JSON.parse(match[1]);
        for (const section of data[1][3][1]) {
            if (Array.isArray(section[0])) {
                for (const item of section[0]) {
                    const utcTime = new Date(item[4][0] * 1000).toISOString();
                    resp.push({
                        title: item[2],
                        source: {
                            name: item[10][2],
                            icon: item[10][22]?.[0] || null, // Safe access to nested properties
                            authors: item[item.length - 1]?.[0] || []
                        },
                        link: item[38],
                        thumbnail: item[8]?.[0]?.[13] || null,
                        thumbnail_small: item[8]?.[0]?.[0] || null,
                        date: utcTime
                    });
                    break;
                }
            }
        }
        return resp;
    } catch (error) {
        console.error('Error:', error.message);
    }
}

// Execute function
getNewsData().then(data => {
    console.log(data);
});

クローリング結果

ターミナルでコードの実行結果を見てみましょう。

Crawling results

ただし、データをより安全な場所に保存するには、いくつかの最適化を行う必要があります。

JavaScript Copy
const fs = require('fs');

fs.writeFileSync('data.json', JSON.stringify(resp, null, 2), 'utf8');

最終的なファイルの内容は以下のとおりです。

final results

Scrapeless Deep SerpApiを使用したGoogleニュースの簡単なスクレイピング

Deep SerpApi

当社のGoogleニュースAPIを使用すると、Googleニュース検索ページから結果をスクレイピングできます。APIは、次のエンドポイントを介してアクセスできます。「engine」:「google_news」。APIDogを使用して、https://apidocs.scrapeless.com/api-14581677でデータスクレイピングを完了できます。あるいは、より迅速な方法は、Scrapeless Deep SerpApi Playgroundを使用してライブインタラクティブデモを直接視聴することです。

なぜAPIを使用する必要があるのか?

  • パースを作成して保守する必要がありません。
  • Googleのブロックを回避:ボット対策を自動的に解決したり、IPブロックを解決したりできます。
  • プロキシやウェブアンブロッカーに追加料金を支払う必要がありません。
  • ブラウザの自動化を使用する必要がありません。

Scrapeless GoogleニュースAPIは、上記のすべての問題を簡単に処理でき、リクエストあたりの応答時間は〜2.33秒(〜1.47秒は驚くほど高速)です。ユーザーは、正確にスクレイピングされたデータを構造化されたJSONで表示するために、API呼び出しを1回行うだけで済みます。

コミュニティに参加して、50万回の無料使用を取得しましょう!

使用手順

  • 手順1。Scrapeless Playgroundにログインします。
  • 手順2。「Googleニュース」アクタを探してクリックします。
  • 手順3。クエリパラメータを構成します。
  • 手順4。「検索開始」をクリックして結果を取得します。
Playground Using steps

さらに読む

まとめ

この記事では、Node.jsを使用してGoogleニュースをスクレイピングする2つの方法について説明しました。独立したスクレイピングツールを持ち、データスクレイピング時に柔軟性を維持したいデータコレクターは、ウェブページとのやり取りの代替手段としてNode.jsを使用できます。手順に従って、スクレイパーを簡単に構築してください。

さらに、GoogleニュースAPIは、ウェブページから取得した生データを迅速に抽出してクリーンアップし、構造化されたJSON形式で表示できるシンプルなソリューションです。簡単なパラメータ構成だけで、データ収集を迅速に完了できます。

今すぐ無料で試してみましょう!

FAQ

Googleニュースをスクレイピングすることは合法ですか?

はい、公開情報であるため、Googleニュースをスクレイピングすることは合法です。ただし、著作権と個人データに関する国内法および地域法に注意する必要があります。

Googleは違法なコンテンツを削除しますか?

はい。通常、Googleは、違法と見なされる国/地域でのみ、コンテンツの削除またはアクセス制限を行います。

Googleはウェブスクレイパーをブロックしますか?

Googleの利用規約では、検索結果を含むサービスのスクレイピングを明確に禁止しています。これらの規約に違反すると、GoogleサービスがあなたのIPアドレスをブロックする可能性があります。その結果、強力なウェブアンブロッカーソリューションを装備する必要があるかもしれません。

Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。

最も人気のある記事

カタログ