JSONをスクレイピングする方法とタグの取得方法

このQ&Aのポイント
  • JSONをスクレイピングする方法とは?参考アドレスと使い方を紹介
  • スクレイピングでタグを取得するためのコードの作成方法を解説
  • カテゴリが必須であり、lockedとfreeがあったり無かったりする場合の対処方法
回答を見る
  • ベストアンサー

JSON をスクレイピングするときに

参考アドレス http://api.ce.nicovideo.jp/liveapi/v1/video.info?__format=json&v=lv262629172 http://api.ce.nicovideo.jp/liveapi/v1/video.info?__format=json&v=lv262502077 http://api.ce.nicovideo.jp/liveapi/v1/video.info?__format=json&v=lv260993313 スクレイピングでタグを取得するときに category は必須で、locked と free が両方あったり、片方無かったり、両方無かったりする場合にすべてのタグをうまく取得するにはどのようなコードを書けばよいですか。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

このようなコードではどうでしょう? ▼コード <?php $url = "http://api.ce.nicovideo.jp/liveapi/v1/video.info?__format=json&v=lv262502077"; $json = file_get_contents($url); $data = json_decode($json); $livetags = $data->nicolive_video_response->video_info->livetags; $category = $livetags->category->livetag; $free = isset($livetags->free) ? $livetags->free->livetag : array(); $locked = isset($livetags->locked) ? $livetags->locked->livetag : array(); $tags = array_merge($free,$locked); $tags[] = $category; var_dump($tags); ?> ▼結果 array(11) { [0]=> string(30) "まこと はク ソババ" [1]=> string(39) " 誰に もまことは勝てない" [2]=> string(42) "森義之 も まこじきが大嫌い" [3]=> string(54) "まことって 皆から嫌われてる んだな" [4]=> string(50) "1ヶ月に1 度だけ放送 するまこじき" [5]=> string(30) "まこ とはク ソババ" [6]=> string(47) "み  んなまこじきchから抜けよう" [7]=> string(45) "國場雄大 もまこじ きが大嫌い" [8]=> string(27) "まことはゼニゲ バ" [9]=> string(47) "み んなまこじきch から抜けよう" [10]=> string(17) "一般(その他)" }

参考URL:
http://uxmilk.jp/14767
nixaht
質問者

お礼

回答ありがとうございます。これでエラー無く処理がスムーズにいけます。 isset() であるかないかを調べればいいんですね。でそれから配列に追加していけばいいと。

関連するQ&A

  • kimonoで取得したjsonファイルの出力

    kimonoで取得したjsonファイルの出力 以下のサイトを使用してスクレイピングしたjsonファイルをphpで表示させようとしたのですが、何も表示されません。助言をお願いします。 http://www.kimonolabs.com/ //jsonファイル { "name": "kokunai", "results": { "collection1": [ { "info": "【運航概況】\n本日4日および明日5日の運航状況は、以下のとおりです。" } ] } } //php記述 <?php $request = "http://www.kimonolabs.com/api/kimonoユーザID?apikey=APIキー"//URLの中身は上記jsonファイルと同一 $response = file_get_contents($request); $results = json_decode($response, TRUE); echo $results['results']['collection1'][info]; ?>

    • ベストアンサー
    • PHP
  • 初心者です jsonをhtml表示させる方法

    Google+APIのhttps://www.googleapis.com/plus/v1/people/108189587050871927619/activities/public?key=yourAPIKey で投稿のjsonを取得して投稿に付いているフルサイズの画像を表示させたいのですが 3階層あるのでどのようにjsを使って表示させれば良いのか分かりません教えてください。

  • JSON形式のデータを表示したい

    はてなブックマークエントリー情報取得API(http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%C3%A5%AF%A5%DE%A1%BC%A5%AF%A5%A8%A5%F3%A5%C8%A5%EA%A1%BC%BE%F0%CA%F3%BC%E8%C6%C0API?kid=184075) で取得したJSON形式のデータをページに表示したいのですが、どの様にすれば良いのでしょうか。 例えば http://b.hatena.ne.jp/entry/json/http://okwave.jp/ のブックマークコメントを抜き出したり、ということを想定しているのですが、可能でしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • jsonでn番目から最後までを取得するには?

    phpでアクセストークンを使ったinstagram jsonデータの取得を試みています。 n番目から最後までのデータを取得するにはどのようにすればよいでしょうか? -------------------------------------------------------- <?php //POSTリクエストの場合のみ受付 if($_SERVER['REQUEST_METHOD'] == 'POST'){ //アクセストークン $access_token = "29587...fa062d9"; //JSONデータを取得して出力 echo @file_get_contents("https://api.instagram.com/v1/users/self/media/recent/?access_token={$access_token}"); //終了 exit; } ?> --------------------------------------------------------

    • 締切済み
    • PHP
  • JSON形式の文字データの変換方法で悩んでいます。

    JSON形式の文字データの変換方法で悩んでいます。 (WEB上のAPIを叩いて取得してきたデータです) 例えば、、、 \u30aa\u30c1\u30b2\u30fc\u30c6\u30ce\u30bb\u30eb この様な文字列です。 他のAPIで得られた文字データの場合、、、 Encode::from_to($name ,'utf8','sjis'); で問題なく日本語に変換できていたのですが、この形式の場合、全く変換されません。 上記の様な文字コードを日本語に変換するには、どうしたらよいのでしょう? 助言いただけると幸いです。

    • ベストアンサー
    • Perl
  • googlemaps api V2からV3への移行

    googlemaps api V2 を使ったサイトをいくつか公開しています。 つい最近、googlemaps api V2 のサポートが終了し、 V3への移行が求められていることをつい最近知りました。 2013年にはV2サイトは表示されなくなるようで、 かなりあせっています。 複数のマーカーを地図上に表示させるために jsonファイルを読み込む形にしています。 このサイトを作ったとき、 googlemaps apiの入門サイトなどを参考にして作ったのですが、 V3に移行するために html を どのように修正したらよいかがわかりません。 jsonファイルの書き方も修正が必要かもわかりません。 V3説明サイトを見てソースをまねしたりしたのですが、 うまくできませんでした。 どのようにソースを組めばよいのか、 jsonを使ったV3でのソースを教えていただけると助かります。 なお、上記サイトでのjsonファイル (chikusa.json) のソースです ----ここから------ { data: [ {lat:35.1638745,lng:136.9252355,html:"<a href='http://www.rr-watanabe.jp/' target='_blank'>料理旅館わたなべ</a>"}, {lat:35.1713848,lng:136.9287544,html:"<a href='http://www.mielparque.jp/nagoya/' target='_blank'>メルパルク名古屋</a>"} ] } -----ここまで----- よろしくご教示お願いします。

    • ベストアンサー
    • AJAX
  • function で json を POST

    37行目に PHP Fatal error: Cannot redeclare sendPostData() と出るのをどのように修正すれば、sendPostData がうまく回りますか。 <?php $total = 110; $test = 2; for ( $i = 0; $i <= ceil($total/100); $i++){ $data = array ( "filters" => array ( array ( "field" => "live_status", "type" => "equal", "value" => "past", ), array ( "field" => "start_time", "from" => "2014-03-12 00:00:00", "to" => "2014-03-13 00:00:00", "type" => "range", ) ), "from" => $test*$i, "issuer" => "apiguide", "join" => array ( 0 => "cmsid", 1 => "title", 2 => "community_id", 3 => "start_time", 4 => "live_end_time", 5 => "comment_counter", 6 => "score_timeshift_reserved", 7 => "provider_type", 8 => "tags", 9 => "member_only"), "order" => "desc", "query" => "一般(その他)", "reason" => "ma9", "search" => array ( "tags" ), "service" => array ( "live" ), "size" => $test, "sort_by" => "_live_recent", ); $encoded = json_encode($data, JSON_UNESCAPED_UNICODE); $url_send ="http://api.search.nicovideo.jp/api/"; function sendPostData($url, $post){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$post); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-type: application/json; charset=UTF-8')); $result = curl_exec($ch); curl_close($ch); return $result; } echo " " . sendPostData($url_send, $encoded); } ?>

    • ベストアンサー
    • PHP
  • Javascript 変数の受け渡しについて

    Javascript 変数の受け渡しについて http://api.twitcasting.tv/api/moviestatus?param=value&movieid=1000 ※ChoromeかFirefox閲覧推奨 こちらのAPIをしようしたいと思うのですが、出力の仕方がわかりません。 例えば1つ目の項目の movieid の値を取得したいときjavascriptではどう表記すればホームページに表示できるようになりますか? つまりmovieidを参照したときに、HTMLで1000と表示されるようにしたいです。(上記のURLの場合) HTMLタグで表記していただけると助かります。 (jsonデータであり、callback関数を呼ぶようになっているのはわかるのですが、初心者の為取得方法がわからないのです。)

  • このスクリプトを一定時間ごとに実行させるにはどうしたらいいですか?

    このスクリプトを一定時間ごとに実行させるにはどうしたらいいですか? javascript: document.cookie="nicohistory=;path=/;domain=nicovideo.jp;"; ml='watch/'+Video.v;sl='api/getflv/'+(Video.v+'\x3f').replace(/nm.*/,"$&as3=1&")+'ts='+(new Date()-7999); sb=function(ul){new Ajax.Request(ul,{method:'get'})}; me=function(ul,ue){new Ajax.Request(ul,{method:'get',onSuccess:function(h){sb(ue)}})}; me(ml,sl); void(0);

  • n番目以降の要素を抽出したい

    アクセストークンを使ったinstagram APIのjsonデータの取得を試みています。 以下のサンプルを見つけてきたのですが、これでは全件取得されてしまいます。 n番目から最後までを取得したい場合は、どのように修正すればよいでしょうか? -------------------------------------------------------- <?php //POSTリクエストの場合のみ受付 if($_SERVER['REQUEST_METHOD'] == 'POST'){ //アクセストークン $access_token = "29587...fa062d9"; //JSONデータを取得して出力 echo @file_get_contents("https://api.instagram.com/v1/users/self/media/recent/?access_token={$access_token}&count=-1"); //終了 exit; } ?> --------------------------------------------------------

    • 締切済み
    • PHP