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

如何使用Python BeautifulSoup模块获取Twitter个人主页名称?

提取Twitter用户主页名称的可行方法

你遇到的问题核心是Twitter的CSS类名是动态生成的,会频繁变更,所以固定写死class值肯定抓不到。另外,Twitter部分内容是JS动态渲染的,直接用requests获取的静态HTML里有些元素可能不存在,但用户的主页名称其实可以通过静态HTML里的meta标签提取,不用找动态生成的span。

方法1:通过Meta标签提取(推荐,无需处理动态渲染)

Twitter会在页面的meta标签里存储用户的显示名称,直接抓取这个最稳定:

import requests
from bs4 import BeautifulSoup

url = 'https://twitter.com/twitterID'
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')

# 提取meta标签里的用户名称
name_element = soup.find('meta', {'name': 'twitter:title'})
if name_element:
    # content值格式为 "显示名称 (@用户名)",拆分出显示名称
    display_name = name_element.get('content').split(' (@')[0]
else:
    # 备选方案:抓取og:title标签
    name_element = soup.find('meta', {'property': 'og:title'})
    display_name = name_element.get('content').split(' (@')[0] if name_element else "error"

print(display_name)

方法2:应对动态渲染的情况(如果meta标签也无法获取)

如果Twitter页面结构调整,静态HTML里没有这些meta标签,说明内容是JS渲染的,需要用selenium模拟浏览器加载页面后再抓取:

from selenium import webdriver
from bs4 import BeautifulSoup
import time

url = 'https://twitter.com/twitterID'
driver = webdriver.Chrome()  # 需要提前安装对应浏览器的驱动
driver.get(url)
time.sleep(2)  # 等待页面加载完成

soup = BeautifulSoup(driver.page_source, 'html.parser')
# 用更稳定的aria-label属性定位元素
name_element = soup.find('span', {'aria-label': lambda x: x and 'Profile name' in x})
display_name = name_element.text if name_element else "error"

driver.quit()
print(display_name)

注意事项

  • 不要依赖动态生成的CSS类名,这类class会随着Twitter页面更新随时变化
  • 频繁请求可能会被Twitter封禁IP,建议添加自定义请求头(比如User-Agent),并控制请求频率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:45:37