使用地理位置过滤器使用 Twitter 流 API 提取旧推文
Extracting Old Tweets using Twitter streaming API using Geo-Location Filter
我的目标是使用 python 提取纽约市 2017 年 1 月整个月的旧推文 ('locations':'-74,40,-73,41')。我可以使用以下代码获取直播推文:
import json
import pandas as pd
import numpy as np
from TwitterAPI import TwitterAPI
#Set up the variables for the 'application'
consumerkey = 'cfKguErYawo2WB7cfNtAT2lKl'
consumersecret = 'my_consumer_secret'
access_token_key = '2195434704-Wov69oF2iIBRgUjWJhD0KThqcLApYCJXqtbYI4K'
access_token_secret = 'my_access_token_secret'
#Setup the API key
api = TwitterAPI(consumerkey,consumersecret,access_token_key,access_token_secret)
# Breaking after extracting 10 live tweets from New York City
r = api.request('statuses/filter', {'locations':'-74,40,-73,41'})
for row,item in enumerate(r):
print(row, item['text'])
if row >= 10:
break
但这不是我要找的。有人可以建议如何使用 Twitter 流 API 或 python 中的任何其他包提取此位置过滤器的旧推文吗?
谢谢!
您可以使用 Twitter 的 REST API 完成您所要求的部分内容。下面是一个使用您用来流式传输的 TwitterAPI 包的示例。但是,当您搜索旧推文时,有一些限制。您只能获得大约一周的旧推文。此外,无论您是否提供位置,您 必须 提供搜索字符串(使用 q
参数)。您只会看到同时匹配字符串和位置的结果。流式传输时,您可以提供过滤字符串或位置或两者。在这种情况下,结果可以匹配字符串或位置,但不一定都匹配。
此代码将下载推文,直到您达到大约一周的限制。它通过发出连续的请求来做到这一点,这些请求是定时的,以免超过 Twitter 的速率限制。您可能还会发现 TwitterGeoPics 包很有用。
from TwitterAPI import TwitterAPI, TwitterRestPager
SEARCH_TERM = 'pizza'
GEOCODE = '40,74,10km'
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_TOKEN_KEY = ''
ACCESS_TOKEN_SECRET = ''
api = TwitterAPI(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)
pager = TwitterRestPager(api, 'search/tweets', {'q': SEARCH_TERM, 'geocode':GEOCODE})
for item in pager.get_iterator():
print(item['text'] if 'text' in item else item)
现在,您无法使用 Twitter 的流 API 提取 30 天前的推文。 Twitter 已将其设为付费。
您可以使用 Twitter premium 的搜索 30 天订阅计划提取过去 30 天的推文 API。
此外,只有在您批准了 Twitter 的开发者帐户后,您才能购买 Twitter 高级订阅。
要获得批准,你可以看到这个link:https://developer.twitter.com/en/apply-for-access.html
如果你有一次性的需求,那么我会建议你使用第三方服务,例如TrackMyhashtag.com or Tweetreach.com
我的目标是使用 python 提取纽约市 2017 年 1 月整个月的旧推文 ('locations':'-74,40,-73,41')。我可以使用以下代码获取直播推文:
import json
import pandas as pd
import numpy as np
from TwitterAPI import TwitterAPI
#Set up the variables for the 'application'
consumerkey = 'cfKguErYawo2WB7cfNtAT2lKl'
consumersecret = 'my_consumer_secret'
access_token_key = '2195434704-Wov69oF2iIBRgUjWJhD0KThqcLApYCJXqtbYI4K'
access_token_secret = 'my_access_token_secret'
#Setup the API key
api = TwitterAPI(consumerkey,consumersecret,access_token_key,access_token_secret)
# Breaking after extracting 10 live tweets from New York City
r = api.request('statuses/filter', {'locations':'-74,40,-73,41'})
for row,item in enumerate(r):
print(row, item['text'])
if row >= 10:
break
但这不是我要找的。有人可以建议如何使用 Twitter 流 API 或 python 中的任何其他包提取此位置过滤器的旧推文吗? 谢谢!
您可以使用 Twitter 的 REST API 完成您所要求的部分内容。下面是一个使用您用来流式传输的 TwitterAPI 包的示例。但是,当您搜索旧推文时,有一些限制。您只能获得大约一周的旧推文。此外,无论您是否提供位置,您 必须 提供搜索字符串(使用 q
参数)。您只会看到同时匹配字符串和位置的结果。流式传输时,您可以提供过滤字符串或位置或两者。在这种情况下,结果可以匹配字符串或位置,但不一定都匹配。
此代码将下载推文,直到您达到大约一周的限制。它通过发出连续的请求来做到这一点,这些请求是定时的,以免超过 Twitter 的速率限制。您可能还会发现 TwitterGeoPics 包很有用。
from TwitterAPI import TwitterAPI, TwitterRestPager
SEARCH_TERM = 'pizza'
GEOCODE = '40,74,10km'
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_TOKEN_KEY = ''
ACCESS_TOKEN_SECRET = ''
api = TwitterAPI(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)
pager = TwitterRestPager(api, 'search/tweets', {'q': SEARCH_TERM, 'geocode':GEOCODE})
for item in pager.get_iterator():
print(item['text'] if 'text' in item else item)
现在,您无法使用 Twitter 的流 API 提取 30 天前的推文。 Twitter 已将其设为付费。
您可以使用 Twitter premium 的搜索 30 天订阅计划提取过去 30 天的推文 API。
此外,只有在您批准了 Twitter 的开发者帐户后,您才能购买 Twitter 高级订阅。
要获得批准,你可以看到这个link:https://developer.twitter.com/en/apply-for-access.html
如果你有一次性的需求,那么我会建议你使用第三方服务,例如TrackMyhashtag.com or Tweetreach.com