You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

twint库搜索每次返回推文数量不一致且limit参数不生效如何解决

问题成因
  • 反爬机制与接口不稳定:twint基于推特前端公开非官方接口实现数据抓取,推特的动态反爬策略会随机拦截部分请求、或返回差异的时间线内容,同时部分已删除、设为隐私可见的推文会被自动过滤,导致每次运行返回的推文数量不一致。
  • limit参数逻辑与缓存干扰:twint的limit参数为拉取批次的阈值,单批次默认返回20条左右推文,不是精确的返回条数控制;同时你当前代码未配置覆盖写入,每次运行会把新结果追加到旧的dogecoin.csv文件中,也会导致最终读取的计数出现偏差。
解决方案
  • 新增反爬与写入配置,避免结果波动:
    新增重试、请求间隔配置,同时设置关闭追加写入,每次运行覆盖旧csv文件,修改后的代码参考:
import os
# 运行前先删除旧文件,避免历史数据干扰
if os.path.exists("dogecoin.csv"):
    os.remove("dogecoin.csv")

config1= twint.Config()
config1.Username = "dogecoin"
config1.Hide_output=True
config1.Store_csv = True
config1.Store_object = True
# 新增重试、请求间隔配置,降低反爬拦截概率
config1.Retries = 5
config1.Sleep = 2
# 关闭追加写入,强制覆盖
config1.Append = False
# limit设置为20的整数倍,设置为目标条数的2~3倍避免过滤后数量不足
config1.limit=20
config1.Output = "dogecoin.csv"
twint.run.Search(config1)
df1= pd1.read_csv('dogecoin.csv')
# 按id去重后取前10条,实现精确条数控制
df1 = df1.drop_duplicates(subset='id', keep='first').head(10)
print(df1['tweet'])
  • 手动控制返回条数:不要依赖limit参数做精确条数控制,拉取完成后通过pandas的head()方法截取指定数量的结果即可,同时增加去重逻辑避免重复数据干扰。

内容的提问来源于stack exchange,提问作者Ankit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:06:04