あるキーワードで検索したツイートをpythonのtwintでスクレイピングしたいんですが、最新ツイートをリアルタイムで取得するのに苦労しています。
通常、twintを使ってキーワードでのスクレイピングを行うと、現時点の最新ツイートから過去に遡って取得されつづけます。
Sinceを使って現在時刻から1秒まえのツイートから取得する方法も試したんですが、うまく動作しません。
試したコード
import twint from datetime import datetime, timedelta nowdate = datetime.now() - timedelta(seconds=1) strdate = "{0:%Y-%m-%d %H:%M:%S}".format(nowdate) while True: c = twint.Config() c.Search = 'lang:ja' c.Since = strdate c.Store_json = True namedate = "{0:%Y%m%d%H%M%S}".format(nowdate) c.Output = 'result' + namedate + '.json' twint.run.Search(c) date = datetime.strptime(strdate, '%Y-%m-%d %H:%M:%S') nowdate = date + timedelta(seconds=1) strdate = "{0:%Y-%m-%d %H:%M:%S}".format(nowdate)
現在時刻から1秒遡った条件で抽出して、1秒ずつ加えていく仕組みです。
こちら実行したところ、おそらく「twint.run.Search(c)」で止まっています。
それ移行の構文が実行されていないようでした。
ご教示よろしくお願いいたします。
>うまく動作しません
こちらどういった挙動でしょうか。
①実行はされるけど、値が取れない。
②実行時にエラーが出る。
③そもそもデバッグ実行すら通らない。
動作によって回答が大きく変わると思います。
ありがとうございます。
twint.run.Search(c)まで走って、その後進まない感じです。
理想としては、ここで上げたコード以外の良い方法があれば教えていただきたいです。
よろしくお願いいたします。
おはようございます。
問題文読ませていただきました。
素朴な疑問なのですが、whileせずに、twint.run.Search(c)を1度だけ動かすことはできている認識で問題ありませんか?
ありがとうございます。
はい。その認識で問題ありません。
なるほど。
nowdate = datetime.now()
strdate = "{0:%Y-%m-%d %H:%M:%S}".format(nowdate)
c = twint.Config()
c.Search = 'lang:ja'
c.Since = strdate
c.Store_json = True
namedate = "{0:%Y%m%d%H%M%S}".format(nowdate)
c.Output = 'result1' + namedate + '.json'
twint.run.Search(c)
nowdate = datetime.now()
strdate = "{0:%Y-%m-%d %H:%M:%S}".format(nowdate)
c = twint.Config()
c.Search = 'lang:ja'
c.Since = strdate
c.Store_json = True
namedate = "{0:%Y%m%d%H%M%S}".format(nowdate)
c.Output = 'result2' + namedate + '.json'
twint.run.Search(c)
を実行した場合、result1, result2のjsonファイルが生成されて、結果が違うことを確認できますでしょうか?????♂️
上記実行したところresutl1のみ生成されました。
プログラムは一回目のtwint.run.Search(c)で止まっていますね。
んー、公式をみる感じloopさせる挙動などを試みていない、stackoverflowなどでやっている人はいるが解決している人がいないので、難しいですね。。
https://pypi.org/project/twint/
私の力では手助けできそうにないです。申し訳ない。????♂️
承知しました。
ご協力いただきありがとうございます。
あなたの回答
tips
プレビュー