我试图在Python3中使用TwitterSearch来发送推文。
所以基本上我想得到这两个ID之间的所有推文。
748843914254249984
- > 760065085616250880
这两个ID来自
Fri Jul 01 11:41:16 +0000 2016
至Mon Aug 01 10:50:12 +0000 2016
所以这是我制作的代码。
crawl.py
#!/usr/bin/python3
# coding: utf-8
from TwitterSearch import *
import datetime
def crawl():
try:
tso = TwitterSearchOrder()
tso.set_keywords(["keyword"])
tso.set_since_id(748843914254249984)
tso.set_max_id(760065085616250880)
ACCESS_TOKEN = xxx
ACCESS_SECRET = xxx
CONSUMER_KEY = xxx
CONSUMER_SECRET = xxx
ts = TwitterSearch(
consumer_key = CONSUMER_KEY,
consumer_secret = CONSUMER_SECRET,
access_token = ACCESS_TOKEN,
access_token_secret = ACCESS_SECRET
)
for tweet in ts.search_tweets_iterable(tso):
print(tweet['id_str'], '-', tweet['created_at'])
except TwitterSearchException as e:
print( e )
if __name__ == '__main__':
crawl()
我对Twitter API不太熟悉,也不熟悉它。但是这段代码应该可以胜任。
但它给予了:
760058064816988160 - Mon Aug 01 10:22:18 +0000 2016
[...]
760065085616250880 - Mon Aug 01 10:50:12 +0000 2016
很多次......就像我一遍又一遍地使用相同的线条而不是在我的两个ID之间获取所有内容。
所以我没有得到任何7月的推文,任何想法为什么?
答案 0 :(得分:1)
<强> TL; DR 强>
删除tso.set_max_id(760065085616250880)
行。
解释(据我所知)
中找到了您的问题&#34;唯一具有默认值的参数是100的计数。这是因为它是这个Twitter API端点返回的推文的最大值。&#34;
如果我通过创建搜索网址在您的代码中进行检查,我会得到:
tso.create_search_url()
#?q=Vuitton&since_id=748843914254249984&count=100&max_id=760065085616250880
包含 count=100
(意味着它将获得100条推文的第一页)。而且,与删除set_since_id
和set_max_id
同时拥有count=100
并检索更多推文相比,它会停在100条推文上。
set_since_id
的 set_max_id
有效,反之亦然。因此,从搜索网址中删除max_id=760065085616250880
会产生您想要的结果。
如果有人能解释为什么set_max_id
无效,请编辑我的答案。