TwitterAPI에서 특정 키워드가 포함된 트윗 수를 확인합니다.
14315 단어 python3.7TwitterAPI
「코로나」를 포함한 모든 트윗을 취득하고 싶습니다만, TwitterAPI에는 이쪽 링크 와 같이
· 180 요청/15 분, 100 트윗/1 요청의 취득 건수 제한
・과거 7일간 분만이라고 하는 취득 대상 기간의 제한
있습니다.
그 때문에 20분마다 1초간 「코로나」를 포함한 트윗의 취득을 실시했습니다.
기간 지정의 방법은 이쪽의 기사를 참고로 했습니다.
TwitterAPI에서 기간을 지정하여 트윗을 얻는 방법
실행
시도한 코드가 여기입니다.
qiita.py
import urllib
from requests_oauthlib import OAuth1
import requests
import sys
import datetime
import openpyxl
def search_tweets(CK, CKS, AT, ATS, word, count, range):
# 文字列設定
word += ' exclude:retweets' # RTは除く
word = urllib.parse.quote_plus(word)
# リクエスト
url = "https://api.twitter.com/1.1/search/tweets.json?lang=ja&q="+word+"&count="+str(count)
auth = OAuth1(CK, CKS, AT, ATS)
response = requests.get(url, auth=auth)
data = response.json()['statuses']
# 2回目以降のリクエスト
cnt = 0
tweets = []
while True:
if len(data) == 0:
break
cnt += 1
if cnt > range:
break
for tweet in data:
tweets.append(tweet['text'])
maxid = int(tweet["id"]) - 1
url = "https://api.twitter.com/1.1/search/tweets.json?lang=ja&q="+word+"&count="+str(count)+"&max_id="+str(maxid)
response = requests.get(url, auth=auth)
try:
data = response.json()['statuses']
except KeyError: # リクエスト回数が上限に達した場合のデータのエラー処理
print('上限まで検索しました')
break
return tweets
# APIの秘密鍵
CK = '*************************' # コンシューマーキー
CKS = '*************************************************' # コンシューマーシークレット
AT = '**************************************************' # アクセストークン
ATS = '*************************************************' # アクセストークンシークレット
d=datetime.datetime(2020,7,16,00,00,00)
td=datetime.timedelta(minutes=20)
n=72
f="%Y-%m-%d_%H:%M:%S_"
l=[]
for i in range(n):
l.append((d+i*td).strftime(f))
dd=datetime.datetime(2020,7,16,00,00,1)
tdd=datetime.timedelta(minutes=20)
nn=72
f="%Y-%m-%d_%H:%M:%S_"
ll=[]
for i in range(nn):
ll.append((dd+i*tdd).strftime(f))
print(l)
print(ll)
sss=[]
for (i,n) in zip(l,ll):
word = f'コロナ since:{i}JST until:{n}JST' # 検索ワード
count = 100 # 一回あたりの検索数(最大100/デフォルトは15)
range = 5 # 検索回数の上限値(最大180/15分でリセット)
# ツイート検索・テキストの抽出
tweets = search_tweets(CK, CKS, AT, ATS, word, count, range)
# 検索結果を表示
kk=(str(len(tweets)))
sss.append(kk)
print(kk)
wb=openpyxl.load_workbook("corona.xlsx") #Excelファイルを起動
ws=wb["Sheet1"]
for (i, j) in enumerate(sss, 1) :
ws.cell(row=i,column=1,value=int(j))
wb.save('corona.xlsx')'
이 코드에서는 7월 16일에 20분마다 1초간 72회 취득하고, 건수를 "corona.xlsx"에 입력하고 있습니다.
이를 바탕으로 하루의 수를 추정합니다.
2020/7/16~2020/7/22의 일주일간의 트윗은 이렇게 되어, 합계로 3561600건, 하루 평균 50만건이 되는 것을 알았습니다!
Reference
이 문제에 관하여(TwitterAPI에서 특정 키워드가 포함된 트윗 수를 확인합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tobiuo0203/items/9fe7fca3673a92c6148d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)