3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ケーシーエスキャロットAdvent Calendar 2018

Day 17

TV番組表を取得してみたい

Last updated at Posted at 2018-12-16

私は小さい頃からテレビが大好きでした。
今でも朝起きればテレビを付ける、、
特に真剣に見ていなくてもテレビは点ける、、
というテレビっ子です。

とう事で、TV番組表をAPIとかで取得出来ないのかなと思い調べて見ました。
※勿論無料で(笑)

NHKのAPI

アカウントを作成すれば1日の上限回数はありますが、無料で利用出来るようです。

日テレのAPI

日テレのアプリ用APIで、番組情報等のコンテンツが取得出来るようです。

こちらも会員になれば、日テレの番組情報は取得出来るかもしれません。

実は現在利用出来そうなAPIはこれしか見付からなかったので、
他の手段が無いか調べて見ました。
※ 後、各テレビ局の番組情報が知りたいというのもありますし。

RubyのGem

nowtvというRubyのGemを発見しました。

ただ、こちらは現在利用出来ないようです。

と私の検索能力と根気では、ここまでしか発見出来なかったので、
他のエントリーの方が沢山記載されている
TV番組表のHPからスクレイピングする方法が手っ取り早いという結果になりました。

↓超雑なプログラム作成(python)

tvnow.py
import requests
from html.parser import HTMLParser

class Parser(HTMLParser):

    def __init__(self):
        HTMLParser.__init__(self)
        self.start = False

    def handle_starttag(self, tag, attrs):
        attrs = dict(attrs)
        if tag == 'dl' \
           and "class" in attrs \
           and attrs['class'].startswith('table-chanel'):

            print("~~~~~~~~~~~~~~~~~~~~~~~")
            self.start = True

    def handle_endtag(self, tag):
        if tag == 'dl':
            self.start = False

    def handle_data(self, data):
        if self.start and len(data.strip()) > 0:
            print(data)

def main():
    r = requests.get('https://tvtopic.goo.ne.jp')
    parser = Parser()
    parser.feed(r.text)
    parser.close()

if __name__ == '__main__':
    main()

う〜ん、、、
単純に現在放送中のTV番組を標準出力しているだけですが、
まぁ取得は出来ましたと・・

という事で、TV番組表は素直にHP見るか、
TVのEPG見て確認がベストですね。
※昔は新聞かテレビジョン(雑誌)でしたが(笑)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?