Googleトレンドからphpでデータを取得する
https://trends.google.co.jp/trends/trendingsearches/daily?geo=JP
上記のページを見ると、Googleトレンドを確認することができます。
今回は、Googleトレンドからphpでデータを取得するプログラムを作成したので、その時のメモを記載します。
やること
https://trends.google.co.jp/trends/trendingsearches/daily?geo=JP
上記URLからデータを取得して、DB(データベース)に、表示されている記事タイトル、説明文、画像URL、公開日時を登録できるようにしていきます。
事前調査
https://trends.google.co.jp/trends/trendingsearches/daily/rss?geo=JP
データ取得用のエンドポイントが提供されていますので、こちらからデータを取得します。アクセスすると分かると思いますが、xmlで提供されています。
Googleトレンドからデータを取得する
$xml = simplexml_load_file('https://trends.google.co.jp/trends/trendingsearches/daily/rss?geo=JP');
simplexml_load_file を使ってデータを取得します。xmlデータが、$xml変数にセットされました。
この形式だと、自由に扱うことができないため、下記のコードのように、一度jsonに変換して、配列を生成するようにします。
json_decode(json_encode($xml), true);
上記に書いてある通り、json_decodeの第二引数に、true を入れると、返されるオブジェクトは連想配列形式になります。データの中身を確認してみます。var_dumpで書き出した結果が以下になります。
array(4) {
["title"]=>
string(19) "Daily Search Trends"
["description"]=>
string(15) "Recent searches"
["link"]=>
string(64) "https://trends.google.co.jp/trends/trendingsearches/daily?geo=JP"
["item"]=>
array(20) {
[0]=>
array(4) {
["title"]=>
string(15) "宮城まり子"
["description"]=>
string(18) "ねむの木学園"
["link"]=>
string(110) "https://trends.google.co.jp/trends/trendingsearches/daily?geo=JP#%E5%AE%AE%E5%9F%8E%E3%81%BE%E3%82%8A%E5%AD%90"
["pubDate"]=>
string(31) "Mon, 23 Mar 2020 08:00:00 +0900"
}...
取得したデータをデータベースに登録する
ここまで来たら、普段利用しているデータベースに登録するだけです。データを見てもらえれば分かりますが、記事データが、$array[‘channel’][‘item’]に入っているため、下記のようなかたちでループさせながら、登録させていきます。
foreach ($reports['channel']['item'] as $report) {
$this->_dataObj->insert($report['pubDate'], $report['title'], $report['link'], $report['description']);
}
完了しました。簡単ですね。