Twitter API: как искать твиты на основе слов запроса и заданного промежутка времени + характеристики твитов
Здесь начинающий программист обращается за помощью. У меня есть список хэштегов, по которым я хочу получить все исторические твиты с 01.01.2015 по 31.12.2018.
Я пытался использовать библиотеку Tweepy, но она разрешает доступ только к твитам за последние 7 дней. Я также пробовал использовать GetOldTweets, поскольку он дает доступ к историческим твитам, но он постоянно дает сбой. Итак, теперь я приобрел премиум-доступ к API для Twitter, который также дает мне доступ ко всем историческим твитам.
Чтобы выполнить свой запрос с помощью премиального API, я не могу использовать библиотеку Tweepy (так как у нее нет ссылки на премиальные API, верно?), И я выбираю между TwitterAPI и Search-Tweets.
1- Предоставляет ли TwitterAPI и Search-Tweets информацию об имени пользователя, местонахождении пользователя, если пользователь проверен, языке твита, источнике твита, количестве ретвитов и избранных и дате каждого твита? (Как это делает Твипи). Я не мог найти никакой информации об этом.
2- Могу ли я указать период времени в моем запросе?
3- Как мне все это сделать?
Это был мой код для библиотеки Tweepy:
hashtags = ["#AAPL","#FB","#KO","#ABT","#PEPCO",...]
df = pd.DataFrame(columns = ["Hashtag", "Tweets", "User", "User_Followers",
"User_Location", "User_Verified", "User_Lang", "User_Status",
"User_Method", "Fav_Count", "RT_Count", "Tweet_date"])
def tweepy_df(df,tags):
for cash in tags:
i = len(df)+1
for tweet in tweepy.Cursor(api.search, q= cash, since = "2015-01-01", until = "2018-12-31").items():
print(i, end = '\r')
df.loc[i, "Hashtag"] = cash
df.loc[i, "Tweets"] = tweet.text
df.loc[i, "User"] = tweet.user.name
df.loc[i, "User_Followers"] = tweet.followers_count
df.loc[i, "User_Location"] = tweet.user.location
df.loc[i, "User_Verified"] = tweet.user.verified
df.loc[i, "User_Lang"] = tweet.lang
df.loc[i, "User_Status"] = tweet.user.statuses_count
df.loc[i, "User_Method"] = tweet.source
df.loc[i, "Fav_Count"] = tweet.favorite_count
df.loc[i, "RT_Count"] = tweet.retweet_count
df.loc[i, "Tweet_date"] = tweet.created_at
i+=1
return df
Как мне адаптировать это, например, для библиотеки API Twitter?
Я знаю, что это должно быть адаптировано примерно так:
for tweet in api.request('search/tweets', {'q':cash})
Но желаемый промежуток времени все еще отсутствует. И я не уверен, совпадают ли названия характеристик с названиями этих библиотек.
1 ответ
Используя TwitterAPI, вы можете делать запросы Premium Search следующим образом:
from TwitterAPI import TwitterAPI
SEARCH_TERM = '#AAPL OR #FB OR #KO OR #ABT OR #PEPCO'
PRODUCT = 'fullarchive'
LABEL = 'your label'
api = TwitterAPI('consumer key', 'consumer secret', 'access token key', 'access token secret')
r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL), {'query':SEARCH_TERM})
for item in r:
if 'text' in item:
print(item['text'])
print(item['user']['name'])
print(item['followers_count'])
print(item['user']['location'])
print(item['user']['verified'])
print(item['lang'])
print(item['user']['statuses_count'])
print(item['source'])
print(item['favorite_count'])
print(item['retweet_count'])
print(item['created_at'])
Поиск Премиум документ объясняет поддерживаемые аргументы запроса. Чтобы задать диапазон дат, используйте это:
r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL),
{'query':SEARCH_TERM, 'fromDate':201501010000, 'toDate':201812310000})