tweepy.Cursor一遍又一遍地返回相同的用户

时间:2016-10-06 21:43:26

标签: python twitter tweepy

我正在尝试将所有搜索结果放在列表中。

以下是代码:

cursor = tweepy.Cursor(api.search_users,"foo")
count = 0
for u in cursor.items(30):
    count += 1
    print count, u.id_str
print count

唉,第1项与21相同,2与22& c:

相同
1 19081001
2 313527365
3 89528870
4 682463
5 2607583036
6 219840627
7 725883651280363520
8 371980318
9 860066587
10 4794574949
11 88633646
12 137482245
13 1447284511
14 15369494
15 171657474
16 442113112
17 6130932
18 2587755194
19 191338693
20 528804165
21 19081001
22 313527365
23 89528870
24 682463
25 2607583036
26 219840627
27 725883651280363520
28 371980318
29 860066587
30 4794574949
30

如何全部搜索结果?

按要求:

dir(cursor)
['__class__',
 '__delattr__',
 '__dict__',
 '__doc__',
 '__format__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__module__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'items',
 'iterator',
 'pages']

1 个答案:

答案 0 :(得分:1)

根据tweepy documentation,你不应该传递大于20的数字。你传递30,这就是你在20个id条目后得到重复id的原因。

我讨价还价并提出了以下代码,该代码将获得与搜索查询匹配的所有用户(此处为foo)。

def get_users():
    try:
        count = 0
        all_users = []
        for page in tweepy.Cursor(api.search_users,"foo").pages():
            #page[0] has the UserObj
            id_str = page[0].id_str
            scr_name = page[0].screen_name
            print(count, id_str, scr_name)
            count += 1
            all_users.append((id_str, scr_name))

    except tweepy.error.TweepError as twerr:
        print(" sleep because of error.. ")
        time.sleep(10)

当然,这是一个非常粗略的实施。请写一个合适的卧铺功能,不超过推特价格限制。