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

如何在Python获取的JSON对象中提取Twitter关注列表数据?

解决Twitter关注列表爬取的解析问题

嘿,我看到你在爬取Twitter用户关注列表时遇到了解析问题,咱们一步步来搞定它!

一、修正当前的解析错误

你现在的问题出在把整个JSON对象转成字符串后直接解析,但实际上需要先提取JSON里的items_html字段——这个字段才包含你要的HTML内容。调整后的代码应该是这样:

import requests
import json
from bs4 import BeautifulSoup

s = requests.session()
# 先完成登录请求(确保你的payload和headers配置正确)
res = s.post("https://twitter.com/sessions", data=payload, headers=headers)
print(res.status_code)  # 建议先确认登录是否成功,200不一定代表登录有效,可检查响应内容

# 请求关注列表的动态接口
r = s.get("https://twitter.com/akhiltaker619/following/users?include_available_features=1&include_entities=1&max_position=1590310744326457266&reset_error_state=false")
dp = r.text
dp1 = json.loads(dp)

# 关键步骤:提取items_html字段中的HTML内容
if 'items_html' in dp1:
    item_html = dp1['items_html']
    soup = BeautifulSoup(item_html, "html.parser")
    x1 = soup.find_all("b", {"class": "u-linkComplex-target"})
    for i in x1:
        print(i.text.strip())  # 用strip()去除文本前后的多余空格
else:
    print("未找到items_html字段,可能登录失败或接口返回格式已变更")

之前的代码错误在于:你把整个JSON对象转成字符串x = json.dumps(dp1),这会把结构化的JSON变成纯文本,BeautifulSoup自然找不到对应的HTML标签。正确逻辑是直接取出JSON中存储HTML片段的字段,再用BeautifulSoup解析这个字段的内容。

二、无需JSON获取动态内容的方法

其实这个Twitter动态加载接口本身就返回JSON格式响应,所以必须解析JSON才能拿到HTML片段。不过如果你不想处理JSON,可以用模拟浏览器的工具(比如Selenium),它会帮你完整加载页面(包括动态渲染内容),直接从页面DOM中提取元素:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化Chrome浏览器(需下载对应版本的chromedriver)
driver = webdriver.Chrome()
driver.get("https://twitter.com/akhiltaker619/following")

# 等待页面加载完成(等待目标元素出现)
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "u-linkComplex-target")))

# 提取所有关注用户的名称
user_names = driver.find_elements(By.CLASS_NAME, "u-linkComplex-target")
for name in user_names:
    print(name.text.strip())

# 关闭浏览器
driver.quit()

这种方法的优点是不用手动处理接口请求和JSON解析,完全模拟用户浏览流程;缺点是速度比直接用requests慢,且需要配置浏览器驱动。另外要注意:Twitter有严格的反爬机制,频繁请求可能被限制,无论用哪种方法都要控制请求频率,必要时使用代理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:35