• ベストアンサー

pythonとtwitter

今pythonを使ってtwitterと通信させる勉強をしています。 特定のユーザのツイートを読み取り、それをテキストファイル(.txt)に変換して保存をしたいのですが、なかなかうまくいきません。 特定のユーザのツイートをpythonで取ってくることはできている状態です。 どなたかアドバイスまたはヒントを頂けないでしょうか。教えてください。

  • Python
  • 回答数2
  • ありがとう数10

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

そのように書いてあると > ・Unicode文字列と文字列の違い > 扱いを間違えると、文字化けしたりエラーになったりする だということがはっきりして、解決方法もすぐにわかります。 Unicode文字列をそのままwriteしようとするときに、ascii以外の文字(日本語等)があると、asciiに変換できないためにエラーになります。 対策は、出力する文字コードを明示して、Unicode文字列を的確に変換することです。 次のいずれか一方を使います。 方法1) open ではなく codecs.open を利用して、出力文字コードを指定して開く http://docs.python.jp/2.6/library/codecs.html#codecs.open 方法2) Unicode文字列をencodeメソッドで通常文字列に変換する http://docs.python.jp/2.6/library/stdtypes.html#str.encode この辺りは、Pythonで日本語を扱う際に、避けては通れないところです。 UnicodeEncodeError UnicodeDecodeError あたりをキーワードに検索して、原理を勉強しておいた方がよいです。 ところで、このプログラム for tweet in timeline: でループする度に、 test.txt に上書きしていますので、最後のつぶやきしか残りません。

kabako-20
質問者

お礼

ありがとうございます!codecs.openを利用して、txtファイルにツイートを出力することができました! test.txtを読み込む際に、’w’ではなく’a’で読み込んだら、全てのツイートを出すことができました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

「なかなかうまくいきません」 というのが一番困る質問です。 何がどのように「うまくいかない」のでしょうか? ・エラーになる →その時のメッセージは? ・文字化けする →高機能なテキストエディタや、バイナリエディタ、文字コード判定ツール等で確認すれば、なにかわかるかもしれない ・txtファイルが空 →本当に出力できているのか? ・ファイルそのものが無い →保存場所はどこ? それぞれの現象毎に、対処方法が違います。 また、Python固有の問題として ・Pythonのバージョンは? Ver2.?からVer3.?になったときに、大きく変更されました。 2と3を間違えると、期待通りの動作をしません。 ・Unicode文字列と文字列の違い 扱いを間違えると、文字化けしたりエラーになったりする

kabako-20
質問者

補足

回答ありがとうございます。 そうですよね、ご指摘ありがとうございます! #!/usr/bin/env python #-*- cording: utf-8 -*- import twitter consumer_key = '******' consumer_secret = '******' access_token_key = '******' access_token_secret = '******' api = twitter.Api(consumer_key=consumer_key, consumer_secret=consumer_secret, access_token_key=access_token_key, access_token_secret=access_token_secret) timeline = api.GetUserTimeline('*******') for tweet in timeline: f = open('test.txt', 'w') f.write(tweet.text) f.close test.txtという空のテキストファイルをつくって、これに読み込んだツイートを書き込むようにしたいのですが・・・ これを実行すると、 f.write(tweet.text) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128) とエラーが出てきてしまう状態です・・・。

関連するQ&A

  • Pythonについて

    Pythonはスマホのメモ帳などでもできるの ですか? htmlやcssは、メモ帳(テキストファイル)を ファイルに保存して拡張子を.htmlにすれば 機能するのですが、Pythonではできるの でしょうか? また、変数など、どのようにしてPythonと htmlを連携?すれば良いのでしょうか?

  • Twitterについて

    Twitterについて質問です Twitterって足跡機能とかありますか? 友達を探す でユーザー名を入れると その人のツイート?が フォローしなくても 見れるじゃないですか それでフォローしなくても ツイートを見た人って 特定出来ますか?

  • Pythonのreadlineについて

    最近Pythonのプログラミングを始めたのですが、Pythonのプログラミングについて以下のことを行いたいのですが、やり方が分からず困っております。 Pythonで行いこと 1.textファイルに例えば以下のようにいくつかの係数を入力しておきます。 a:0.5, b:0.8, c:0.9 2.上記のテキストファイルを読み込み、pythonの変数a、b、cに値を格納したいと考えています。 色々検索している中でテキストファイルの読み込みはf=open(xxx.txt)で読み込み、各行の読み込みはreadline()というコマンドでできることは分かったのですが、lines=f.readline()とした後、その"line"の中からaが0.5、bが0.8という数字部分だけを切り出してプログラム中の変数に渡す方法が分からない状態です。 皆様のお知恵を拝借いたしたく、宜しくお願いいたします。

  • pythonについて

    私はプログラミングに興味があってmacでpython2.7を使っています。 python2.7でプログラムをファイルを書く方法が分かりません。 また、 python専用の本を持ってるのですが、「test.py」という部分があります。 “テキストエディット”、“AppleScript エディット”で保存するをクリックして 名前を「test、py」にできないのですが「test.py」にする必要はないのでしょうか? どなたかやり方を教えてください。

  • ツイッター(Twitter)について

    ツイッターをドコモの携帯(スマホではありません)ではじめたばかりでまだ使い勝手があまり解っていなく、 テレビ番組のワイドショーのある報道についてツイッターにて批判をしたら、 ●●さん(自分のユーザーID)関連という項目をクリックすると、 知らない方から自分宛に荒らし行為のようなツイートが来ていました。(相手は1人ですが) こういったツイートは自分側から消せないのでしょうか? あとこのユーザーさんをはじめ特定のユーザーをメールのように拒否は出来ないものでしょうか? 仮に拒否などが出来ない前提として自分自身の主張を述べる媒体としてツイッターは向かないものであり、軽い情報伝達やあいさつ程度で使うものであるのでしょうか?

  • twitterについて

    私はtwitterアカウントを持っていませんが、たまに知人のツイートを覗いていました。最近、オススメユーザーに特定されると聞いたのですが、アカウントなしで覗いていた場合でも、おすすめユーザーに特定されるのですか?不安で仕方ありません。お返事おねがいします。

  • Twitter

    Twitterで、ホームのタイムラインにおいて、私がフォローしているとあるユーザーの方のツイートのみが反映されないのですが、私はこの方に何かされているのでしょうか?因みに、ブロックはされておりません。相手は鍵付きアカウントでもありません。こういう環境下で、自分のツイートを特定のフォロワーに見せないようにする事など可能なのでしょうか? そういう原因及び解決策、或いはそのような特定のフォロワーに自分のツイートを反映させない技術の方法があれば是非とも教えて下さい。

  • ツイッターの公開@返信について

    こんにちは。最近ツイッターを使い始めたものです。 「@ユーザー名」が出てくるツイートについて質問があります。 ある特定の人に返信するときは「メッセージを送る」などの選択肢を押せば「@相手のユーザー名 」が自分のつぶやきの最初に自動で出てくるのですが、ツイートをみているとたまに「今日は[@ユーザー名]さんと[@ユーザー名]さんに会いました」のような文章中に複数のユーザー名を書いているものを見かけます。 こうゆうツイートをする時はいちいちその人がツイッター内どのようなアカウント名なのか調べて書いているんですか?

  • 巷で大人気のtwitterですが、こちらがtwitterのユーザーとし

    巷で大人気のtwitterですが、こちらがtwitterのユーザーとして未登録の状態で、他の誰かのページを頻繁に閲覧した場合、相手側からこちら側の人物特定が出来るものでしょうか?(または人物までは特定できないけど、同じ人が見に来ていることが推測できるという程度も含め) ちなみに、知り合いのツイートを携帯電話から閲覧している状況下で…ということでお願いします。(ログインもフォローもしない状態ということです) お分かりになる方いらっしゃいましたら教えて下さい。お願いします♪

  • pythonのエラーについて教えてください。

    pythonの勉強しています。練習として以下の様なコードを書きました。 #!/usr/bin/python # coding=utf-8 f = open('aw1.txt' 'r') for row in f: line_data = row.split(' ') print(line_data(1)) f.close() aw1.txtというファイルは自分でviで作成しました。 このpythonスクリプトを実行すると IOError: [Errno 2] No such file or directory: 'aw1.txtr' というエラーになってしまいます。 でも f = open('aw1.txt' 'r') と書いて なぜ 'aw1.txtr'というファイルがないというエラーとなるのかがわかりません。 どこが間違っているのでしょうか? どなたか教えていただけないでしょうか?