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

Twint爬取Twitter时间线时Since参数失效仅能爬取近10天内容求助

Twint Since参数失效问题修复方案及替代工具

可行修复方案

  • 卸载原有pip安装的官方原版Twint,安装仍在迭代维护的第三方fork版本,官方原版已停止更新超过2年,完全不适配X(原Twitter)现有接口规则,是参数失效的核心原因。
  • 修正代码逻辑:nest_asyncio的加载要放在所有Twint调用之前,不要放在异常捕获块里,否则首次运行会触发异步冲突,导致配置参数加载异常。
  • 必须同时配置Since和Until两个时间参数,当前可正常使用的Twint版本仅单边配置Since时不会触发时间筛选逻辑,默认只会拉取最近10天的推文。
  • 新增c.Full_text = True配置项,避免推文内容截断导致的时间戳匹配失效。

修正后的可运行代码示例:

import nest_asyncio
nest_asyncio.apply()
import twint

c = twint.Config()
c.Search = "biden"
c.Lang = "en"
c.Since = "2021-01-01"
c.Until = "2021-02-01" # 可按需求调整结束时间
c.Limit = 5000
c.Pandas = True
c.Show_hashtags = False     
c.Hide_output = True
c.Full_text = True

twint.run.Search(c)
# 爬取结果可直接读取为DataFrame
df = twint.storage.panda.Tweets_df

替代爬取工具

如果上述修复后仍无法满足需求,可选用以下更稳定的工具:

  • snscrape:无需申请官方API密钥,支持按时间范围、关键词、用户名等维度拉取公开推文,反爬适配更新频率远高于Twint,轻量爬取场景下优先选择。
    示例代码:
    import snscrape.modules.twitter as sntwitter
    import pandas as pd
    
    tweets_list = []
    # 时间筛选规则直接写在查询语句中
    query = "biden lang:en since:2021-01-01 until:2021-02-01"
    for i,tweet in enumerate(sntwitter.TwitterSearchScraper(query).get_items()):
        if i >= 5000:
            break
        tweets_list.append([tweet.date, tweet.id, tweet.content, tweet.user.username])
        
    tweets_df = pd.DataFrame(tweets_list, columns=['Datetime', 'Tweet Id', 'Text', 'Username'])
    
  • tweepy:X官方适配的SDK,需要提前申请X开发者平台的API密钥,稳定性最高,如有学术研究资质可申请学术API,支持拉取2006年至今的全量公开推文。
  • 自定义爬虫:基于Scrapy框架搭配代理池实现,可根据X的前端接口规则自行适配,灵活性最高,适合大规模爬取场景。

内容的提问来源于stack exchange,提问作者Ciaran O Brien

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:54:02