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

Senior Web Scraping Engineer
news.google.comは、ニュース記事を見つけるのに最適な場所と言えるでしょう!Googleニュースは、リアルタイムで検証されたニュースのコレクションであり、インターネットユーザーにとって最も信頼され、人気のあるプラットフォームの1つです。
そのため、Googleニュースのスクレイピングは、データ分析、調査、または単にニュースを読むために、最新のニュース記事、トレンドトピック、および関連メタデータの収集に使用できます。さらに一歩進めたい場合は、Googleニュースのスクレイピングを使用して、リアルタイムのウェブスクレイピングを通じて独自のパーソナライズされたニュースアプリケーションを構築することもできます。
このブログ記事では、Node.JSとGoogleニュースAPIを使用してGoogleニュースから関連データを収集する方法について説明します。
なぜGoogleニュースの結果をスクレイピングする必要があるのか?
業界に関わらず、Googleニュースからのデータスクレイピングは、組織の開発を大いに促進できます。
旅行やホスピタリティ業界の企業を例に考えてみましょう。旅行戦略、安全対策、観光トレンドに関する情報を収集することで、企業は稼働率の変化を予測し、それに応じて対策を計画することができます。また、この情報を使用してマーケティング戦略を調整し、効果を高め、新規顧客を獲得することもできます。
一方、投資会社は、金融ニュースを使用して、市場動向、規制変更、経済予測に関するデータ収集を行うことができます。このデータの適切な使用は、リスク管理をより効果的に行い、顧客により正確なアドバイスを提供するのに役立ちます。これにより、ポートフォリオのパフォーマンスと顧客満足度を向上させることができます。
Googleニューススクレイパーが収集するデータ

📰 記事メタデータ
- 見出し: ニュース記事のタイトル。
- ソース: 出版社またはニュースメディア(例:BBC、CNN)。
- 公開日: 記事が公開された日時。
- 著者: ジャーナリストまたは寄稿者の名前。
- 要約/スニペット: 記事からの簡単な説明または抜粋。
- URL: 完全な記事へのリンク。
✍️ コンテンツデータ
- 本文: ニュース記事の本文(ソースウェブサイトへのアクセスが必要です)。
- 画像/メディア: 記事に埋め込まれた画像、ビデオ、その他のメディア。
- キーワード/トピック: 記事に関連付けられたタグまたはカテゴリ(例:「政治」、「テクノロジー」)。
📊 トレンドと人気データ
- トレンドトピック: Googleニュースで現在人気のあるトピックまたはストーリー。
- トップストーリー: 特定のカテゴリまたは地域の上位ニュースとして強調表示された記事。
- 検索トレンド: ニューストピックに関連する人気の検索用語。
🧭 地理的および人口統計データ
- 地域ベースのニュース: 特定の地域または国に合わせて調整されたニュース記事。
- 言語: 記事が書かれている言語。
🧐 分析と洞察
- 感情分析: 記事のトーンまたは感情(肯定的、否定的、中立的)。
- トピッククラスタリング: 類似のテーマまたは主題による記事のグループ化。
- 時系列分析: ニュースストーリーが時間の経過とともにどのように進化するかを追跡します。
Node.jsを使用したGoogleニューススクレイパーの構築 | 手順
環境の準備
Nodeプロジェクトに次のライブラリをインポートする必要があります。
JavaScript
const axios = require('axios');
const fs = require('fs');
次に、Googleニュースから結果を取得する関数を作成しましょう。
JavaScript
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ライブラリを使用してリクエストを行います。
次に、返されたデータから必要なデータを見つける必要があります。

クエリを検索すると、各結果またはニュースがページ上に存在することがわかります。そのため、正規表現を使用して必要なデータに一致させ、処理する必要があります。
JavaScript
const regex = /data:(\[.*?\]), sideChannel/s;
const match = html.match(regex);
Googleニュースデータのスクレイピング
抽出されたデータグループ内の具体的な情報は、配列の形式で格納されています。この時点で、ページ上の具体的な情報と比較し、具体的なデータに対応する添え字を絞り込む必要があります。
JavaScript
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
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);
});
クローリング結果
ターミナルでコードの実行結果を見てみましょう。

ただし、データをより安全な場所に保存するには、いくつかの最適化を行う必要があります。
JavaScript
const fs = require('fs');
fs.writeFileSync('data.json', JSON.stringify(resp, null, 2), 'utf8');
最終的なファイルの内容は以下のとおりです。

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

当社の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回行うだけで済みます。
使用手順
- 手順1。Scrapeless Playgroundにログインします。
- 手順2。「Googleニュース」アクタを探してクリックします。
- 手順3。クエリパラメータを構成します。
- 手順4。「検索開始」をクリックして結果を取得します。

さらに読む
- Google検索結果をスクレイピングする方法?
- Googleトレンドをスクレイピングする方法?
- Googleマップの公開データをスクレイピングする方法?
- Google求人をスクレイピングする方法?
- Google Scholarをスクレイピングする方法?
- Googleショッピングをスクレイピングする方法?
- Google Flightsをスクレイピングする方法?
まとめ
この記事では、Node.jsを使用してGoogleニュースをスクレイピングする2つの方法について説明しました。独立したスクレイピングツールを持ち、データスクレイピング時に柔軟性を維持したいデータコレクターは、ウェブページとのやり取りの代替手段としてNode.jsを使用できます。手順に従って、スクレイパーを簡単に構築してください。
さらに、GoogleニュースAPIは、ウェブページから取得した生データを迅速に抽出してクリーンアップし、構造化されたJSON形式で表示できるシンプルなソリューションです。簡単なパラメータ構成だけで、データ収集を迅速に完了できます。
FAQ
Googleニュースをスクレイピングすることは合法ですか?
はい、公開情報であるため、Googleニュースをスクレイピングすることは合法です。ただし、著作権と個人データに関する国内法および地域法に注意する必要があります。
Googleは違法なコンテンツを削除しますか?
はい。通常、Googleは、違法と見なされる国/地域でのみ、コンテンツの削除またはアクセス制限を行います。
Googleはウェブスクレイパーをブロックしますか?
Googleの利用規約では、検索結果を含むサービスのスクレイピングを明確に禁止しています。これらの規約に違反すると、GoogleサービスがあなたのIPアドレスをブロックする可能性があります。その結果、強力なウェブアンブロッカーソリューションを装備する必要があるかもしれません。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。