怎么看老推文:四种方法,按能回溯多远排序
怎么看老推文:四种方法,按能回溯多远排序
所有人都是从下拉开始的,而下拉有一个天花板。
在一个活跃账号上,你会在几千条之内撞到它 —— 时间线不再加载,或者加载慢到效果一样。★而这个天花板不是一个固定数字:它取决于账号、会话和当天的情况。★
四种方法能到达不同的深度。 下面按顺序列出,以及每种真正能给你什么。
四种方法
| 方法 | 能到多深 | 成本 |
|---|---|---|
| 下拉 | ★几千条,而且不稳定★ | 低 |
| 日期区间搜索 | ★比你以为的浅★ | 低 |
| 自己的官方存档 | ★你发过的全部★ | 申请一次,然后等 |
| 游标翻页 | ★时间线允许的深度★ | 要写代码 |
⚠️ ★反直觉的是日期区间搜索。★ 人们默认 since: 和 until: 能伸进遥远的过去 —— 它们收窄的是搜索本来就能看到的范围,★而搜索强烈偏向近期★。日期搜索的真实行为。
游标翻页是那个能扩展的方法 —— 一页一个调用,跟着游标走。
不靠下拉找到第一条推文
这是很多"怎么看老推文"搜索背后的真实问题,而下拉确实是错误的工具。
★一直翻到末尾,只保留最后一页。★ 你不是在读时间线 —— 你是在走它,为了找到它的远端。
import requests
BASE = "https://api.socialapi.tech"
KEY = "your_api_key"
HDRS = {"X-API-Key": KEY}
def oldest_posts(username, max_pages=200):
"""走到时间线末尾。返回到达的最后一页。"""
cursor, last, pages = None, [], 0
while pages < max_pages:
params = {"username": username, "limit": 100}
if cursor:
params["cursor"] = cursor
r = requests.get(f"{BASE}/v1/user/last_tweets",
params=params, headers=HDRS, timeout=60)
r.raise_for_status()
body = r.json()
batch = body["data"]
if not batch:
break # ★到底了★
last, pages = batch, pages + 1
cursor = body.get("meta", {}).get("next_cursor")
if not cursor:
break # ★没有游标 = 确实到底了★
return last, pages
posts, pages = oldest_posts("someaccount")
print(f"走了 {pages} 页;这里最老的一条:{posts[-1]['created_at']}")
★注意那两个分开的终止条件。★ 空批次和没有游标是两个不同的信号,★只检查其中一个的代码,要么提前停,要么死循环★ —— 这是翻页代码里最常见的 bug。
成本是页数,不是难度。 ★一个 2,000 条的账号是 20 页;一个 20 万条的账号是 2,000 页★ —— 这正是"找第一条推文"对大多数账号很便宜、对少数账号很贵的原因。
游标随每一页返回 —— 把它存下来,才让这个走法可以续跑。
每种方法会漏掉什么
说具体一点,因为这些缺口正是浪费时间的地方:
下拉会漏掉天花板以外的一切 —— 而且★它不会给你任何"撞到天花板了"的信号★。它就是停了。
搜索会漏掉遥远的过去。 ★一个 2019 年的日期区间,返回的会远少于当时存在的量★,而这个缺口是静默的。
你的存档漏掉别人的帖子。 ★它对你自己是完整的,对任何其他人毫无用处★ —— 而且必须在你删除任何东西之前申请。
翻页会漏掉平台不再提供的部分。 ★存在一个真实的下限★,而且没有任何方法能到它以下 —— 存档深度意味着什么。
⚠️ ★没有任何方法能够到已删除的帖子。★ 一条在你捕获之前就被删掉的帖子,在上面每一种方法里都不存在 —— 什么能在删除后幸存。
大家会问的问题
怎么看老推文? ★用游标翻页★,小账号也可以下拉。搜索回溯不了多远。
我怎么才能看到老推文? 同一个答案。 ★下拉的天花板因账号而异,而且撞到时不会有任何提示。★
怎么翻看老推文? 翻页翻到它们。 ★成本是页数,不是难度。★
在推特上怎么找老推文? 要深度用游标翻页,记得原话就用搜索。 ★当你记得措辞时用搜索。★
不下拉怎么看老推文? ★用代码翻页★ —— 那正是把下拉限制去掉的办法。
怎么找我自己的老推文? 申请官方存档 —— ★那是你自己历史唯一的完整副本★。
怎么找别人的老推文? 翻他的时间线。 ★对不属于你的账号,不存在存档。★
怎么找到一个账号的第一条推文? 一直翻到时间线末尾,保留最后一页。 ★没有捷径。★
有"第一条推文查找器"吗? 叫这个名字的工具做的就是这同一个走法。 ★不存在一个"第一条推文"的索引。★
下拉为什么会失效? 时间线不再提供更多了。 ★这个天花板不是一个公布的数字★,而且会变。
我到底能回溯多远? 翻页比下拉和搜索都深,★但存在一个真实下限★ —— 深度的现实。
日期搜索为什么返回这么少? ★搜索偏向近期,而日期是在这个范围内收窄★ —— 为什么。
能按关键词搜老推文吗? 能,如果它还在索引里。 ★加引号的精确原话效果最好。★
怎么搜某一个人的过往推文?
from:用户名 加关键词 —— ★那是搜索;翻页是枚举★。
怎么看某一年的推文?
用 since: 和 until: 框住那一年 —— ★要预期结果不完整★。
能拿到一个账号的全部推文吗? 能拿到时间线提供的那些。 ★"全部"没有任何人能保证。★
一个大账号是多少页? 大致是帖子数除以每页条数 —— ★一个 20 万条的账号是几千页★。
翻页时该把结果存下来吗? ★该。★ 把一个大时间线走两遍是纯粹的浪费 —— 第一遍就存。
中断的翻页怎么续跑? 把游标存下来。 ★从头重来会把一切重取一遍。★
什么时候该结束翻页循环? ★空批次或没有游标 —— 两个都要检查★,因为它们是不同的信号。
翻页时会看到已删除的推文吗? 不会 —— 已删除的帖子会怎样。
能看被封账号的老推文吗? 不能。 ★封禁会把账号和它的帖子一起从公开视图移除。★
不登录能看老推文吗? 能看一些,限制很多 —— 退出登录的访问。
老推文还会继续涨互动吗? 会,而且无限期 —— ★这正是老帖子会持续积累点赞的原因★。
找到之后怎么导出老推文? 边翻边把每页写出去 —— 导出模式。
翻页时包含回复吗?
取决于用哪个视图。 ★用 exclude 过滤时间线就会排除它们★ —— 这个区分。
为什么两个工具显示的"最老一条"不一样? 因为走到的深度不同。 ★两者都不权威★ —— 深度是投入的函数。
能按媒体找老推文吗? 用媒体视图 —— ★它们是独立的索引★ —— 为什么这很重要。
接口能回溯的深度有上限吗? ★存在一个真实的下限★,而且那是平台的,不是服务商的。
找一条特定老推文最快的方式是什么? ★用引号搜它的确切措辞。★ 翻页用于枚举;搜索用于回忆。
能给很多账号自动找第一条推文吗? 能 —— 每个走一遍。 ★按总帖子数做预算,不是按账号数。★
简短版
★下拉的天花板会变,而且撞到时没有提示。日期搜索比人们以为的浅。用游标翻页才是那个能扩展的方法。★
★要找一个账号的第一条推文,走到末尾保留最后一页★ —— 成本是页数,而对大多数账号来说那个数字很小。
我们的 API 用游标翻时间线,每条帖子都带完整正文和互动数据,所以一次"走到底"就是一个带两个终止条件的循环。只读、固定按次价格。
★没有任何方法能够到什么:在任何人捕获之前就被删掉的帖子,以及平台自己下限之下的内容。★ 两者都是真实的限制,而任何声称不受此限的服务商,描述的都是他们自建的存档,不是 X 提供的东西。
延伸阅读:存档深度到底意味着什么 · 日期区间搜索为什么给得少 · 什么能在删除后幸存 · 导出你采集到的东西。