【问题标题】:Request status update Twitter stream data请求状态更新 Twitter 流数据
【发布时间】:2021-10-20 01:16:33
【问题描述】:

我通过 Python 上的流式 API 检索了 Twitter 数据,但是,我也对公共指标在此期间如何演变感兴趣。因此,我想每天请求指标。

很遗憾,状态更新 API 一次只能处理 100 个请求。我有一个所有 id 的列表,如何自动拆分 id 的字符串,以便所有这些都被请求,总是 100 个批次?

非常感谢您!

【问题讨论】:

  • 不要保留为单个字符串,而是保留为 ID(字符串)列表。当你有列表时,你可以使用my_list[0:100]my_list[100:200],...my_list[n:n+100] - 所以你可以像for n in range(0, len(my_list), 100): print( my_list[n:n+100] )一样使用for-loop。如果需要,您甚至可以将列表转换为字符串",".join(my_list[n:n+100])

标签: python python-3.x twitter twitter-streaming-api python-twitter


【解决方案1】:

将其保留为 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) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-13
    • 2018-06-22
    • 2019-11-29
    • 2012-03-13
    • 2016-03-12
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多