前提とか
ラズベリーパイ3で、Python2.7を利用して、気象庁Atomフィード(XMLフォーマット形式電文)を定期に取得、出力したい。
当方はPython 2.7.16[GCC 8.3.0] on linux2です。
気象庁Atomフィードでは以下のような文が取得できるようです。
(利用したAtomフィールド→http://www.data.jma.go.jp/developer/xml/feed/extra.xml)
気象特別警報・警報・注意報 下関地方気象台 【山口県気象警報・注意報】注意報を解除します。
###実現したいこと
気象特別警報・警報・注意報 下関地方気象台 【山口県気象警報・注意報】注意報を解除します。
を出力。
###書いたコード(RSS取得コードの流用)
これを取得するため、ライブラリfeedparserを利用し以下のコードを使用することにしました。
python
1# coding: utf-8 2from twython import Twython, TwythonError 3import feedparser 4 5Atom_URL = "http://www.data.jma.go.jp/developer/xml/feed/extra.xml" 6news_dic = feedparser.parse(Atom_URL) 7latest_entry = news_dic['entries'][0] 8rss1 = latest_entry.title + latest_entry.author 9rss2 = latest_entry.content 10print (rss1) 11print (rss2)
実行結果は以下の通りです、
気象特別警報・警報・注意報下関地方気象台 [{'base': u'http://www.data.jma.go.jp/developer/xml/feed/extra.xml', 'type': u'text/plain', 'value': u'\u3010\u5c71\u53e3\u770c\u6c17\u8c61\u8b66\u5831\u30fb\u6ce8\u610f\u5831\u3011\u6ce8\u610f\u5831\u3092\u89e3\u9664\u3057\u307e\u3059\u3002', 'language': u'ja'}]
このように、「気象特別警報・警報・注意報下関地方気象台」は通常の文字列として出力されますが、そのあとの「【山口県気象警報・注意報】注意報を解除します。」に該当する部分がUnicodeエスケープされた文字列として出力されてしまいます。
そこで以下の通りエンコードを指定しました。
python
1# coding: utf-8 2from twython import Twython, TwythonError 3import feedparser 4 5Atom_URL = "http://www.data.jma.go.jp/developer/xml/feed/extra.xml" 6news_dic = feedparser.parse(Atom_URL) 7latest_entry = news_dic['entries'][0] 8rss1 = latest_entry.title + latest_entry.author 9rss2 = latest_entry.content 10print (rss1) 11print rss2.encode('utf-8')
実行結果は以下の通りです;
気象特別警報・警報・注意報下関地方気象台 Traceback (most recent call last): File "t.py", line 11, in <module> print rss2.encode('utf-8') AttributeError: 'list' object has no attribute 'encode'
このように怒られてしまいます。
(rss1とした「気象特別警報・警報・注意報下関地方気象台」は通常の文字列として出力される)
リストにはエンコードという属性がない、らしいので以下のように書き足す
python
1# coding: utf-8 2from twython import Twython, TwythonError 3import feedparser 4 5Atom_URL = "http://www.data.jma.go.jp/developer/xml/feed/extra.xml" 6news_dic = feedparser.parse(Atom_URL) 7latest_entry = news_dic['entries'][0] 8rss1 = latest_entry.title + latest_entry.author 9rss2 = latest_entry.content 10for rss3 in rss2 : 11 print (rss1) 12 print rss3.encode('utf-8')
実行結果は以下の通りです;
気象特別警報・警報・注意報下関地方気象台 Traceback (most recent call last): File "t.py", line 12, in <module> print rss3.encode('utf-8') File "/usr/local/lib/python2.7/dist-packages/feedparser.py", line 400, in __getattr__ raise AttributeError, "object has no attribute '%s'" % key AttributeError: object has no attribute 'encode'
このようなエラーが出て、ここで詰まってしまっています。
自分がやったことは以上となります。どなたか解決方法をご教示頂ければ幸いです。
なにか情報で足りないところがありましたらお申し付けください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/01 23:46