如何修复 Twitter 的 30 天沙盒搜索中的错误代码 403?
How to fix error code 403 on Twitter's 30 day sandbox search?
我正在尝试从 Twitter 的 30 天沙盒搜索中收集推文 API 并将它们写入 csv 文件。我收到错误代码 403,但我无法从错误消息中收集到任何有用的信息。我查看了相关帖子,我要么已经尝试过他们所说的解决问题的方法,要么他们正在尝试做一些完全不同的事情(错误代码 403 似乎是许多类型问题的综合错误代码)
我已经能够从标准搜索中收集推文,但我需要的数据比过去 7 到 9 天内可用的数据还要多。我在 Twitter 上有一个开发者帐户,在我的仪表板上,它显示我在 30 天搜索沙盒中本月仍有 250 个请求和 100 万条推文(我使用了 0)
下面是我的代码:
import csv
import settings as sett #file that includes my access token, consumer key and the secrets of each.
from TwitterAPI import TwitterAPI
api = TwitterAPI(sett.consumer_key, sett.consumer_secret, sett.access_token, sett.access_token_secret)
r = api.request('tweets/search/30day/:maruchan.json', {'query' : 'maruchan'})
#^.......^To be honest I don't know what is supposed to go here, I just put something random, this might be the problem....
csvFile = open('maruchan.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)
for tweet in r:
try:
#Write a row to the csv file/ I use encode utf-8
csvWriter.writerow([tweet.created_at, tweet.full_text.encode('utf-8'), tweet.favorite_count, tweet.retweet_count, tweet.id, tweet.user.screen_name])
except tweepy.TweepError:
pass
csvFile.close()
当我在我的 Jupyter notebook 中 运行 时,出现以下错误:
---------------------------------------------------------------------------
TwitterRequestError Traceback (most recent call last)
<ipython-input-122-0fe9d55ba54b> in <module>
15 csvWriter = csv.writer(csvFile)
16
---> 17 for tweet in r:
18
19 try:
~\Anaconda3\lib\site-packages\TwitterAPI\TwitterAPI.py in __iter__(self)
217 :raises: TwitterConnectionError, TwitterRequestError
218 """
--> 219 return self.get_iterator()
220
221 def get_quota(self):
~\Anaconda3\lib\site-packages\TwitterAPI\TwitterAPI.py in get_iterator(self)
204 """
205 if self.response.status_code != 200:
--> 206 raise TwitterRequestError(self.response.status_code)
207
208 if self.stream:
TwitterRequestError: Twitter request failed (403)
我是编码的新手,不知道自己在做什么,但我自己无法解决这个问题,所以如果有人能帮助我,我将不胜感激。谢谢!
我明白我的问题是什么了。端点错误,csvWriter.writerow 的输入也错误。
端点:
对于端点,您的环境名称是通过转到您的 Twitter 开发者帐户找到的,在顶部 right-hand 的角落有一个 drop-down 菜单,上面有您的用户名,单击 "Dev environments"。这应该将您带到您的开发环境列表,每个环境应该是 "Dev environment label"(在我的例子中,标签是 "research")。获取标签并将其放入您的 API 请求中,前面有一个冒号,后面没有“.json”。注意:对于完整的存档搜索,只需将“30day”替换为 "fullarchive".
CSV 输入:
对于 CSV 输入,它们需要采用 tweet['aspect'] 的格式,其中 tweet 是我们迭代的任意变量名称,'aspect' 是请求的数据类型(例如 'text' 或 'created_at')
下面是正确的代码和一些注释。
import csv
import settings as sett #file that includes my access token, consumer key and the secrets of each. You get these by applying for a developer account and making an app
from TwitterAPI import TwitterAPI
api = TwitterAPI(sett.consumer_key, sett.consumer_secret, sett.access_token, sett.access_token_secret) #tells the Twitter API who you are.
r = api.request('tweets/search/30day/:research', {'query' : 'maruchan lang:en', #maruchan is the search term and lang:en filters for english results
"maxResults": "100", #number of tweets collected (starting from newer tweets)
"fromDate":"201906250000", #start data
"toDate":"201907010000" #end data (tweets will only be collected between these dates)
#YYYYMMDDHHmm #format of the fromDate and toDate input values
})
csvFile = open('maruchan_30_day_sandbox.csv', 'a') #'maruchan_30_day_sandbox.csv' is file name, 'a' is for append mode
#Use csv Writer
csvWriter = csv.writer(csvFile)
for tweet in r:
#creates csv file with the listed elements seperated by a comma in each row #encode('utf-8') helps read certain characters
csvWriter.writerow([tweet['created_at'], tweet['user']['screen_name'], tweet['text'].encode('utf-8') if 'text' in tweet else tweet])
csvFile.close()
我正在尝试从 Twitter 的 30 天沙盒搜索中收集推文 API 并将它们写入 csv 文件。我收到错误代码 403,但我无法从错误消息中收集到任何有用的信息。我查看了相关帖子,我要么已经尝试过他们所说的解决问题的方法,要么他们正在尝试做一些完全不同的事情(错误代码 403 似乎是许多类型问题的综合错误代码)
我已经能够从标准搜索中收集推文,但我需要的数据比过去 7 到 9 天内可用的数据还要多。我在 Twitter 上有一个开发者帐户,在我的仪表板上,它显示我在 30 天搜索沙盒中本月仍有 250 个请求和 100 万条推文(我使用了 0)
下面是我的代码:
import csv
import settings as sett #file that includes my access token, consumer key and the secrets of each.
from TwitterAPI import TwitterAPI
api = TwitterAPI(sett.consumer_key, sett.consumer_secret, sett.access_token, sett.access_token_secret)
r = api.request('tweets/search/30day/:maruchan.json', {'query' : 'maruchan'})
#^.......^To be honest I don't know what is supposed to go here, I just put something random, this might be the problem....
csvFile = open('maruchan.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)
for tweet in r:
try:
#Write a row to the csv file/ I use encode utf-8
csvWriter.writerow([tweet.created_at, tweet.full_text.encode('utf-8'), tweet.favorite_count, tweet.retweet_count, tweet.id, tweet.user.screen_name])
except tweepy.TweepError:
pass
csvFile.close()
当我在我的 Jupyter notebook 中 运行 时,出现以下错误:
---------------------------------------------------------------------------
TwitterRequestError Traceback (most recent call last)
<ipython-input-122-0fe9d55ba54b> in <module>
15 csvWriter = csv.writer(csvFile)
16
---> 17 for tweet in r:
18
19 try:
~\Anaconda3\lib\site-packages\TwitterAPI\TwitterAPI.py in __iter__(self)
217 :raises: TwitterConnectionError, TwitterRequestError
218 """
--> 219 return self.get_iterator()
220
221 def get_quota(self):
~\Anaconda3\lib\site-packages\TwitterAPI\TwitterAPI.py in get_iterator(self)
204 """
205 if self.response.status_code != 200:
--> 206 raise TwitterRequestError(self.response.status_code)
207
208 if self.stream:
TwitterRequestError: Twitter request failed (403)
我是编码的新手,不知道自己在做什么,但我自己无法解决这个问题,所以如果有人能帮助我,我将不胜感激。谢谢!
我明白我的问题是什么了。端点错误,csvWriter.writerow 的输入也错误。
端点: 对于端点,您的环境名称是通过转到您的 Twitter 开发者帐户找到的,在顶部 right-hand 的角落有一个 drop-down 菜单,上面有您的用户名,单击 "Dev environments"。这应该将您带到您的开发环境列表,每个环境应该是 "Dev environment label"(在我的例子中,标签是 "research")。获取标签并将其放入您的 API 请求中,前面有一个冒号,后面没有“.json”。注意:对于完整的存档搜索,只需将“30day”替换为 "fullarchive".
CSV 输入: 对于 CSV 输入,它们需要采用 tweet['aspect'] 的格式,其中 tweet 是我们迭代的任意变量名称,'aspect' 是请求的数据类型(例如 'text' 或 'created_at')
下面是正确的代码和一些注释。
import csv
import settings as sett #file that includes my access token, consumer key and the secrets of each. You get these by applying for a developer account and making an app
from TwitterAPI import TwitterAPI
api = TwitterAPI(sett.consumer_key, sett.consumer_secret, sett.access_token, sett.access_token_secret) #tells the Twitter API who you are.
r = api.request('tweets/search/30day/:research', {'query' : 'maruchan lang:en', #maruchan is the search term and lang:en filters for english results
"maxResults": "100", #number of tweets collected (starting from newer tweets)
"fromDate":"201906250000", #start data
"toDate":"201907010000" #end data (tweets will only be collected between these dates)
#YYYYMMDDHHmm #format of the fromDate and toDate input values
})
csvFile = open('maruchan_30_day_sandbox.csv', 'a') #'maruchan_30_day_sandbox.csv' is file name, 'a' is for append mode
#Use csv Writer
csvWriter = csv.writer(csvFile)
for tweet in r:
#creates csv file with the listed elements seperated by a comma in each row #encode('utf-8') helps read certain characters
csvWriter.writerow([tweet['created_at'], tweet['user']['screen_name'], tweet['text'].encode('utf-8') if 'text' in tweet else tweet])
csvFile.close()