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

如何用Python检测Twitter账号是否存在?

Twitter账号存在性检测代码修改方案

问题背景

现有一段仅适用于Instagram的账号检测代码,希望修改为检测Twitter账号是否存在。尝试替换检测文本(如"This account doesn't exist"、"exist"或"account")后仍无法正常运行,原代码如下:

users = ["Sardoche","ElonMusk"]
valid_accounts = []

def twitterchecker(users, valid_accounts):
    for user in users:
        r = get(url = f"https://twitter.com/{user}")
        soup = BeautifulSoup(r.text, "html.parser")
        if soup(text=lambda t: user in t.text) != []:
            valid_accounts.append(f'https://www.twitter.com/{user}')
twitterchecker(users, valid_accounts)

原代码问题分析

  1. 页面匹配逻辑不可靠:原代码通过页面文本是否包含用户名判断账号存在性,但Twitter存在的账号页面中用户名会多次出现,不存在的页面可能因动态渲染导致静态HTML中无预期错误文本,判断失效。
  2. 未处理反爬机制:直接发起请求会被Twitter识别为非浏览器请求,返回403或其他非预期状态码,无法获取真实页面内容。
  3. 未利用状态码:Twitter账号不存在时通常返回404状态码,这是比文本匹配更可靠的判断依据。

修改后的可行代码

from requests import get
from bs4 import BeautifulSoup

users = ["Sardoche","ElonMusk", "ThisIsAFakeAccount12345"]
valid_accounts = []

def twitterchecker(users, valid_accounts):
    # 模拟浏览器请求头,绕过基础反爬拦截
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
    }
    
    for user in users:
        url = f"https://twitter.com/{user}"
        try:
            r = get(url, headers=headers, allow_redirects=True)
            # 优先通过状态码判断:404表示账号不存在
            if r.status_code == 404:
                continue
            # 处理特殊情况:部分不存在的账号可能跳转至搜索页,状态码为200
            soup = BeautifulSoup(r.text, "html.parser")
            # 检测页面中是否存在账号不存在的提示元素
            error_element = soup.find("div", {"data-testid": "empty_state_header_text"})
            if error_element and "Sorry, we couldn’t find that page." in error_element.text:
                continue
            # 以上判断都不触发,说明账号存在
            valid_accounts.append(url)
        except Exception as e:
            print(f"检测用户 {user} 时出错: {str(e)}")

twitterchecker(users, valid_accounts)
print("有效账号列表:", valid_accounts)

关键改动说明

  • 添加请求头:模拟浏览器发送请求,绕过基础反爬机制,确保获取真实页面内容。
  • 状态码优先判断:利用Twitter返回的404状态码快速识别不存在的账号,效率更高。
  • 补充元素检测:针对部分不存在账号跳转至搜索页(状态码200)的情况,通过页面特定元素的文本内容二次验证。
  • 异常捕获:处理请求过程中可能出现的网络错误等异常,避免程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:18:18