请求状态更新Twitter流数据

2024-04-25 07:04:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过Python上的流式API检索了Twitter数据,然而,我也对公共度量在此期间的演变方式感兴趣。因此,我希望每天都能获得这些指标

不幸的是,状态更新的API一次只能处理100个请求。我有一个所有id的列表,如何能够自动分割id字符串,以便所有id都将被请求,始终以100个为一批

提前非常感谢


1条回答
网友
1楼 · 发布于 2024-04-25 07:04:03

将其保留为ID列表,而不是单个字符串

然后您可以使用range(len(...))[n:n+100]类似

# example data
all_ids = list(range(500))

SIZE = 100
#SIZE = 10  # test on smaller size

for n in range(0, len(all_ids), SIZE):
    print(all_ids[n:n+SIZE])

您甚至可以使用yield来为此创建特殊函数

def split(data, size):
    for n in range(0, len(data), size):
        yield data[n:n+size]

# example data
all_ids = list(range(500))

SIZE = 100
SIZE = 10
    
for part in split(all_ids, SIZE):
    print(part)

最终你可以得到[:100]和切片[100:],但是这个销毁列表,所以你必须在这个列表的副本上执行

# example data
all_ids = list(range(500))

SIZE = 100
#SIZE = 10  # test on smaller size

all_ids_copy = all_ids.copy()

while all_ids_copy:
    print(all_ids_copy[:SIZE])
    all_ids_copy = all_ids_copy[SIZE:]

您还可以为此使用一些外部模块

from toolz import partition

# example data
all_ids = list(range(500))

SIZE = 100
#SIZE = 10  # test on smaller size
 
for part in partition(SIZE, all_ids):
    print(part)

如果您将拥有字符串列表,那么可以使用join()将其转换回单个字符串

    print( ",".join(part) )

对于整数列表,您可能需要将整数转换为字符串

    print( ",".join(str(x) for x in part) )

相关问题 更多 >