pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

PHP:「温泉」関連facebookページIDをgraphを使い検索。460件くらいあった

f:id:PageTAKA:20160307105802j:plain

説明

2016年3月7日午前、公開されているfacebookページのうち検索語「温泉」でヒットするidを集め、「旅のブログ」にUPしました。464件ありました。
facebookページのURLは次のようになっています。

  • https://www.facebook.com/旅おもに国内-1738940873004386/

ところが、次のようにしても、上のような状態にリダイレクトしてくれます。つまり、事実上問題なく表示される、いまのところ。

  • https://www.facebook.com/1738940873004386

facebookページのタイトル名を省略していても、idが入っていればログイン状態であるかどうかにかかわらず表示される、いまのところ…。

graphサーチは1回あたり100件が上限です。またサーバ連続使用時間が30秒などとなると、「温泉」検索のあとに判断抽出などを一気にすますのが難しそうだと思いました。そのため、idだけ別途用意し、準備にかかる時間を短くしようと収集しました。

ひとりで使うのももったいないので、「facebook:「温泉」関連facebookページIDをgraphを使い検索。460件くらいあった - 旅のブログ」にidをコンマ区切りにして貼り付けました。半角数字なので、表示枠を右にはみ出すかもしれませんし、興味のない方にはナンジャコリャの世界かもしれませんね。でも、このidがあれば、「温泉」ページを順々に覗きに行って、イロイロ参考にすることもあるのではないかと思います。

関心のある方、自己責任でご利用ください。
tabi.hatenadiary.com

PHP備忘録

この464件を抽出するのに手こずったのが次のようなことでした。

  • PHPfacebook内を検索するのにつかうgraphの理解が面倒だった。アクセストークン取得まで結構手数がかかる。
  • graph検索の?以降の作り方が手探り状態だった。
  • graph検索で1回に検索ヒットできるのは100件までで、これを乗り越える工夫が必要だった。
  • JSON取得したデータをオブジェクトから配列変換に手こずった。配列にしたあとも多次元配列で、ほしいデータ読み出しにも手こずった。
  • 目印となる配列キーが必要に応じて出現するというのに手こずった。場面の想定が面倒だった。配列キー有無がフラグ代わりに使えたが…。
  • 読み込み、抽出、判定、ループなどに関しては何を使うかというのがPHP初心者の爺には難しかった。今回、do{}while() という「後判定」型のループをはじめて使うことになった…。
  • 役に立ったキーとなるコトバなどは次の通り。稼働PHPで実際に使った。なお、$付きは「変数」で「固有名詞」みたいなものですから、適宜…。
    • $searchQuery = 'https://graph.facebook.com/search?q=' . $wordQuery . '&type=page&limit=' . $searchLimit . '&access_token=' . $accessToken . $tailQuery . $nextUrl;
    • $arrayQuery = json_decode(file_get_contents($searchQuery), true);
    • count($arrayQuery["data"])
    • isset($arrayQuery["paging"]['cursors']['after'])