@chisakka

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

twitterからテキスト抽出

解決したいこと

インデントが悪いようなのですが、いろいろ試しても改善しません。
main関数の正しいインデントを教えてください。
インデント以外に問題があるのでしょうか。

発生している問題・エラー

def main():
      keywords = "(**×) -RT"
      filename = 'twitter_search.csv'
      Since = '2012-05-30_00:00:00' + '_JST'
      Until = '2022-05-30_23:59:59' + '_JST'
      print(keywords, 'について', Since, 'から', Until, 'までのツイートを収集します')
    
      df = pd.DataFrame(columns=['ユーザーID', 'フォロワー数', '日時', 'いいね数', 'ツイート本文'])
      df.to_csv(filename, index = False, encoding='utf-8_sig')
      request = twitter_auth()
      twitter_cursor(request, keywords, Since, Until, filename)

if __name__ == '__main__':
main()
0 likes

4Answer

Comments

  1. @chisakka

    Questioner

    ありがとうございます。
    下のエラーも見ていただけたら幸いです。

できました、ありがとうございます。
しかし、修正後、次のエラーが発生しました。
どこが悪いのでしょうか・・・

エラー

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Input In [154], in <cell line: 13>()
     11       twitter_cursor(request, keywords, Since, Until, filename)
     13 if __name__ == '__main__':
---> 14         main()

Input In [154], in main()
      8 df = pd.DataFrame(columns=['ユーザーID', 'フォロワー数', '日時', 'いいね数', 'ツイート本文'])
      9 df.to_csv(filename, index = False, encoding='utf-8_sig')
---> 10 request = twitter_auth()
     11 twitter_cursor(request, keywords, Since, Until, filename)

Input In [124], in twitter_auth()
      2 auth = tweepy.OAuthHandler(CK, CT)
      3 auth.set_access_token(AT, AS)
----> 4 api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
      5 return api

TypeError: __init__() got an unexpected keyword argument 'wait_on_rate_limit_notify'

0Like

人に聞くよりまずはググったほうがいいですよ。
早いし、自分のためにもなりますからね。
https://www.google.com/search?q=__init__()+got+an+unexpected+keyword+argument+%27wait_on_rate_limit_notify%27

おそらくエラー原因はtweepyのAPIが変わったことかな。最新のAPIに追いついてないですね。

https://note.com/kumonnu/n/nbca51f7af3c2
を参考にしているようですが、もう少しいいソースコードを参考にしたほうがいいかと。
(Noteの影響かもしれませんが)ほかにもインデントがおかしい箇所があり、あんまり内容が信用できないですね。。。

質問内容からあまりPythonの知識がなさそうなのでまずはPythonの基本を学ぶか、完全に動くコード(断片的にブログに上がっているものではなく、Github等に上がっている1つのファイルで動くもの)をベースにしたほうが目的に早くたどり着きそうです。

0Like

Comments

  1. @chisakka

    Questioner

    APIの変更に対応していないこと、わかりました。
    おっしゃる通り、まだ基本が足りず、それでも使う必要があったため質問してしまいました。
    github を全然使っていませんでしたが、活用しようと思います!
    ご指摘ありがとうございます。

上記の回答の言っていることもごもっともですが、少し解説しましょう。

(個人)プログラミングをするにおいて重要な点を紹介します。
①エラーコードの内容を把握する。
②利用しているライブラリのドキュメントには目を通すです。
③「ライブラリを使ってみた」などの他人の記事はあくまで参考程度に。。

 __init__() got an ...

まずはこのコードです。Pythonでは __init__()はインスタンス生成時の初期化処理をするときに呼ばれます。ということはインスタンス生成時に問題が起きているということになります。

次にエラー文

.. unexpected keyword argument...

上記の文を日本語に訳すと「予期せぬ引数のキーワード」とあります。
今回引数に入れたのは「auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True」ですね。

さらにエラー文

...'wait_on_rate_limit_notify'

と書いてあるの、原因は「wait_on_rate_limit_notify」で間違いないでしょう。

今度はドキュメントを確認します。↓
https://docs.tweepy.org/en/stable/api.html

使える引数一覧です。
auth – The authentication handler to be used

cache – The cache to query if a GET method is used

host – The general REST API host server URL

parser – The Parser instance to use for parsing the response from Twitter; defaults to an instance of ModelParser

proxy – The full url to an HTTPS proxy to use for connecting to Twitter

retry_count – Number of retries to attempt when an error occurs

retry_delay – Number of seconds to wait between retries

retry_errors – Which HTTP status codes to retry

timeout – The maximum amount of time to wait for a response from Twitter

upload_host – The URL of the upload server

wait_on_rate_limit – Whether or not to automatically wait for rate limits to replenish`

「wait_on_rate_limit_notify」は入っていませんね。なのでこの引数を取り除くことで、問題が解決されることになります。(ちなみに少し古いドキュメントをみるとわかりますが、この時は引数が入っていますね→(古いドキュメント)https://kurozumi.github.io/tweepy/api.html)

まとめ
・エラー文を分からないで済ませずに、読むことに取り組む
・わからないライブラリはドキュメントを活用する。
・(Python、オブジェクト指向を学ぶ)
上記のことに意識してプログラムを実践していきましょう。

0Like

Comments

  1. @chisakka

    Questioner

    詳細な回答をいただき、ありがとうございます。
    ライブラリで引数を確認しておりませんでした。
    ご指摘の通り、実践しようと思います。
    非常に分かりやすい解説、本当にありがとうございます!

Your answer might help someone💌