如何从id到另一个id搜索推文

时间:2016-08-03 08:46:54

标签: python-3.x twitter

我试图在Python3中使用TwitterSearch来发送推文。

所以基本上我想得到这两个ID之间的所有推文。

748843914254249984 - > 760065085616250880

这两个ID来自

Fri Jul 01 11:41:16 +0000 2016Mon 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月的推文,任何想法为什么?

1 个答案:

答案 0 :(得分:1)

<强> TL; DR

删除tso.set_max_id(760065085616250880)行。

解释(据我所知)

我在TwitterSearch Docs

中找到了您的问题

&#34;唯一具有默认值的参数是100的计数。这是因为它是这个Twitter API端点返回的推文的最大值。&#34;

如果我通过创建搜索网址在您的代码中进行检查,我会得到:

tso.create_search_url()
#?q=Vuitton&since_id=748843914254249984&count=100&max_id=760065085616250880

包含 count=100 (意味着它将获得100条推文的第一页)。而且,与删除set_since_idset_max_id同时拥有count=100并检索更多推文相比,它会停在100条推文上。

没有set_since_id

set_max_id有效,反之亦然。因此,从搜索网址中删除max_id=760065085616250880会产生您想要的结果。

如果有人能解释为什么set_max_id无效,请编辑我的答案。