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

使用BeautifulSoup获取Twitter推文转发数的技术问题

嘿,我发现你这段代码里有个核心问题——你直接把Twitter的URL传给了BeautifulSoup,但BeautifulSoup本身并不能发起HTTP请求获取网页内容,它只能解析已经拿到的HTML源码。得先通过请求工具(比如requests库)把页面的HTML拉下来,再交给BeautifulSoup处理。

另外要提醒你:Twitter的前端页面结构经常会更新,你用的那些旧class选择器(比如js-tweet-stats-container、js-stat-retweets)大概率已经失效了,这会导致你找不到目标元素。

给你调整后的示例代码,同时加上了反爬的请求头(避免被Twitter拦截),并适配了当前的页面结构:

import requests
from bs4 import BeautifulSoup

# 模拟浏览器请求,防止被Twitter的反爬机制拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}

# 目标推文URL
tweet_url = 'https://twitter.com/dog_rates/status/758828659922702336'

# 先获取页面的HTML内容
response = requests.get(tweet_url, headers=headers)
# 检查请求是否成功
if response.status_code != 200:
    print(f"请求失败,状态码: {response.status_code}")
else:
    soup = BeautifulSoup(response.text, 'lxml')
    # 基于当前Twitter页面结构查找转发数元素
    retweet_section = soup.find('div', data_testid='retweet')
    if retweet_section:
        # 提取转发数字段
        retweet_count = retweet_section.find('span', class_='css-1jxf684 r-18u37iz r-1q142lx').text
        print(f"该推文的转发数: {retweet_count}")
    else:
        print("未找到转发数元素,可能Twitter页面结构已更新,请重新检查选择器")

最后再啰嗦一句:你提到的Twitter API确实是更靠谱的方案——网页抓取需要频繁适配页面结构,维护成本很高;而API会返回结构化的JSON数据,直接就能拿到转发数、点赞数等信息,稳定性和效率都远高于网页解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:37:43