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

使用snscrape爬取Twitter长时间后触发215错误的解决咨询

解决Twitter snscrape的215认证错误

Twitter返回的215错误本质是身份验证失败,说明你的请求未通过Twitter的反爬或身份校验——snscrape直接调用API时未携带合法认证信息,被平台拦截了。以下是具体解决方案:


1. 添加Twitter开发者认证凭据

先在Twitter开发者平台创建项目,获取API Key、API Secret、Access Token、Access Secret,然后通过环境变量或代码传入认证信息:

import os
import snscrape.modules.twitter as sntwitter
import pandas as pd

# 替换为你的开发者凭据
os.environ['SNSCRAPE_TWITTER_API_KEY'] = '你的API Key'
os.environ['SNSCRAPE_TWITTER_API_SECRET'] = '你的API Secret'
os.environ['SNSCRAPE_TWITTER_ACCESS_TOKEN'] = '你的Access Token'
os.environ['SNSCRAPE_TWITTER_ACCESS_SECRET'] = '你的Access Secret'

maxTweets = 350000
tweets_list1 = []
user_list = ['lanacionmas','LANACION','Ambitocom','infobae','clarincom']

for user in user_list:
    scraper = sntwitter.TwitterSearchScraper(f'from:{user} since:2018-01-01 until:2018-12-31')
    for i, tweet in enumerate(scraper.get_items()):
        if i >= maxTweets:
            break
        tweets_list1.append([tweet.date, tweet.id, tweet.content])
    print(f'Done with {user}') # 修正原代码的缩进错误

2. 降低请求频率,避免触发反爬

即使添加了认证,也不要高频请求,可在循环中加入延迟:

import time

# 在推文追加后添加延迟
tweets_list1.append([tweet.date, tweet.id, tweet.content])
time.sleep(1) # 间隔1秒,可根据情况调整

3. 使用网页爬取模式(无开发者账号可选)

改用TwitterUserScraper爬取用户主页推文,再过滤时间范围,无需API凭据:

for user in user_list:
    scraper = sntwitter.TwitterUserScraper(user)
    for i, tweet in enumerate(scraper.get_items()):
        if i >= maxTweets:
            break
        # 筛选2018年的推文
        if tweet.date.year == 2018:
            tweets_list1.append([tweet.date, tweet.id, tweet.content])
    print(f'Done with {user}')

注意:网页模式爬取速度较慢,可能触发IP限制,建议配合代理或轮换网络使用。

4. 检查IP是否被限制

若多次请求失败,大概率是IP被Twitter拉黑,可尝试切换网络(如手机热点)或使用代理IP。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:35:51