使用Python Selenium无法获取Twitter帖子中的视频URL 求助
Twitter视频源URL获取说明
Twitter(现X)的网页端不会直接在页面DOM中暴露可直接下载的视频源URL。
原因说明
页面中的视频是通过动态渲染加载的,实际的媒体流URL被封装在内部API的响应中,而非直接嵌入HTML元素内。这些URL通常带有临时签名,会在短时间内过期,无法直接从页面源码中提取。
用Selenium获取的方法
可以通过Selenium结合Chrome DevTools协议(CDP)监听网络请求,捕获Twitter媒体API返回的响应,从中提取视频流地址:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options def extract_twitter_video_urls(tweet_url): chrome_options = Options() # 可选:启用无头模式 # chrome_options.add_argument("--headless=new") driver = webdriver.Chrome(service=Service(), options=chrome_options) driver.get(tweet_url) # 启用网络监听 driver.execute_cdp_cmd("Network.enable", {}) video_urls = [] def capture_response(response): response_details = response.get("response", {}) # 筛选视频类型的响应 if "video" in response_details.get("mimeType", ""): media_url = response_details.get("url") if media_url and media_url not in video_urls: video_urls.append(media_url) # 注册响应监听事件 driver.execute_cdp_cmd("Network.responseReceived", {}, capture_response) # 等待页面加载完成,确保捕获到视频请求 driver.implicitly_wait(12) driver.quit() return video_urls # 调用示例 target_tweet = "https://twitter.com/Tesla/status/1711184330792579093" result_urls = extract_twitter_video_urls(target_tweet) for i, url in enumerate(result_urls, 1): print(f"分辨率视频URL {i}: {url}")
注意事项
- 提取到的视频URL是临时有效,过期后无法访问;
- Twitter有反爬机制,频繁抓取可能会触发账号限制,建议控制请求频率,避免被封禁。
内容的提问来源于stack exchange,提问作者Mohit Aswani
相关产品推荐
相关产品推荐

