我正试图使用标准API下载推文列表,但我得到的总是相同的记录。 i、 这是我的请求:
ApiSearch = api.search(q="#immigration", lang="en", result_type="mixed", count=100, until=untilDate, include_entities=False)
但如果我时不时地运行它,在1小时之间,我得到的结果是相同的
我的api.search
的设置是否有问题,或者我是否误解了Twitter标准API的限制
这是我的代码:
conn_str = ("DRIVER={PostgreSQL Unicode};"
"DATABASE=TwitterLCL;"
"UID=postgres;"
"PWD=pswd;"
"SERVER=localhost;"
"PORT=5432;")
consumer_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)
col_db_tweetTable01 = ['CREATED_AT', 'TWEET_ID', 'TEXT', 'USER_ID']
i = 0
while i <= 10000:
time.sleep(2)
i += 1
ApiSearch = api.search(q="#immigration", lang="en", result_type="mixed", count=100, until=None, include_entities=False)
time.sleep(2)
for res in range(0, len(ApiSearch)):
db_tweetTable01DB = pd.DataFrame(columns = col_db_tweetTable01) #creates a new dataframe that's empty
TWEET = ApiSearch[res]._json
Created_At = None
Created_At = TWEET.get("created_at")
print("Created_At : "+Created_At)
Tweet_Id = None
Tweet_Id = TWEET.get("id_str")
Text = None
Text = TWEET.get("text")
User_Id = TWEET.get("user").get("id_str")
db_tweetTable01DB = db_tweetTable01DB.append({'CREATED_AT' : Created_At, 'TWEET_ID' : Tweet_Id, 'TEXT' : Text, 'USER_ID' : User_Id}, ignore_index=True)
try:
connStr = pyodbc.connect(conn_str)
cursor = connStr.cursor()
for index, row in db_tweetTable01DB.iterrows():
#print(row)
cursor.execute("INSERT INTO public.db_tweettable01(CREATED_AT, TWEET_ID, TEXT, USER_ID) values (?, ?, ?, ?)", row['CREATED_AT'], row['TWEET_ID'], row['TEXT'], row['USER_ID'])
connStr.commit()
cursor.close()
connStr.close()
except pyodbc.Error as ex:
sqlstate = ex.args[1]
print(sqlstate)
print("Tweet_Id : "+Tweet_Id)
print("User_Id : "+User_Id)
谢谢你的帮助
正如我在your Tweepy issue on GitHub中所回答的,一个“混合的”
result_type
包括流行的和最近的结果。如果只需要最新的结果,则需要指定“最近”。正如我所解释的,您需要使用since_id
参数来避免获得重复的tweet见the documentation for ^{} 和the standard search API
如果要在短时间内(如2秒,而不是1小时)迭代分页结果,可以使用Cursor
对于每个查询超过100个结果,标准搜索API的限制是每页最多100个,因此这是不可能的
相关问题 更多 >
编程相关推荐